分享
 
 
 

ActionScript2.0编程技术教程

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

通过第 1 章的学习,初步认识了 ActionScript2.0 。 是不是想马上动手制作 Flash 交互动画或者 Flash 应用程序了?别着急,万事开头难, ActionScript 编程基础很重要。要学会 ActionScript2.0 编程,必须先理解一些基本 的术语和概念。

本章将介绍变量和常量、变量的数据类型、运算符和表达式、路径等一些基本知识,在此基础上,认识 Flash 中的坐标、角度和影片剪辑的属性。利用这些知识,可以制作一些简单的效果如直线运动等。

2.4 路径

在一个学校中有校长、老师、学生,老师中又有语文老师、数学老师等。校长和老师之间有信息交流,老师和学生也有信息交流等。

一个 Flash 影片好比是一个学校,可以由多个影片剪辑组成,这些影片剪辑中,可以有自己的时间轴,有自己的变量等。影片剪辑之间是怎样进行交换信息的呢?这与 Flash 中的路径有关。

2.4.1 绝对路径

如果校长要找学生,可以这样进行,校长先找到下一级的老师,老师再找下一级的学生,表示如下:

校长 . 老师 . 学生

主场景( _root )好比是校长,主场景中的影片剪辑( mcA )好比是老师,影片剪辑( mcA )下的影片剪辑( mc1 )好比是学生,如果要在主场景中访问影片剪辑 mc1 ,用如下方式:

_root.mcA.mc1;

在 Flash 影片中从起点(如从主场景开始)调用变量或影片剪辑,这样的语法称为绝对路径。它简单、容易理解,但移植性差。

范例 2-13 :使用绝对路径

( 1 )打开 Flash MX 2004 ,新建一个 Flash 文档。

当建立一个新文件时,出现在面前的场景即主场景,用 _root 表示。

( 2 )在主场景中建立一个实例名为“ mcA ”的影片剪辑实例,双击 mcA 进入元件的编辑场景,建立一个实例名为“ mc1 ”的影片剪辑实例。在【时间轴】的上方可以显示出影片剪辑实例的顺序。如图 2.18 所示。

图 2.18 影片剪辑实例的顺序

( 3 )返回主场景,新建一层,单击此层的第 1 帧,打开【动作】面板,输入下列代码:

trace(_root.mcA._width);

// 输出影片剪辑实例 mcA 的宽度

trace(_root.mcA.mc1._width);

// 输出影片剪辑 mc1 的宽度

( 4 )测试影片,观看【输出】面板中输出的数据。

( 5 )返回主场景,把主场景第 1 帧中的代码中改为:

trace(mcA._width);

trace(mcA.mc1._width);

测试影片,结果是一样的。

从测试结果可看出,在主场景中使用绝对路径,可省略 _root 。

( 6 )返回主场景,把第 1 帧中的代码加上注释,在主场景中加入一个按钮,单击按钮,打开【动作】面板,输入下列代码:

on (release) {

trace(_root.mcA._width);

trace(_root.mcA.mc1._width);

}

测试影片,单击按钮,观看测试结果。

( 7 )返回主场景中,把按钮中的代码改为:

on (release) {

trace(mcA._width);

trace(mcA.mc1._width);

}

测试影片,单击按钮,观看测试结果,测试结果不变。

从测试结果可看出,主场景中的按钮上的代码可以看成是在主场景中的时间轴上执行,所以可以不加 _root 。

( 8 )返回主场景,把按钮中的代码加上注释,双击场景中的影片剪辑实例,在第 1 帧上加上下列代码:

trace(_root.mcA._width);

trace(_root.mcA.mc1._width);

测试影片,结果与前面相同。

( 9 )关闭测试窗口,把第 1 帧上的代码改为:

trace(mcA._width);

trace(mcA.mc1._width);

测试影片,结果错误。

从测试结果可看出,影片剪辑有自己的时间轴,它的代码是在自己的时间轴上执行,所以必须加路径 _root 。

源文件见“ 2-13.fla ”(文件路径:配套光盘 \ 源文件 \part2 \2-13.fla )。

[/url]试一试: 在本例的基础上,做如下修改:

Flash 文件可以由多个影片组成,一个影片可从外部动态的导入到另一个影片的影片剪辑中,比如,影片“ 1.swf ”被导入到影片“ main.swf ”中的影片剪辑实例 mc 中,如果在影片“ 1.swf ”中的程序中有 _root ,导入到 mc 后,不再是主场景,所以路径改变,这时“ 1.swf ”的中的代码就不能正确的执行,这时,就要使用相对路径来解决这个问题。

相对路径是以自己所处的起点去访问其它的变量或影片剪辑。如在范例 2-13 中,以 mc1 为起点访问上一级的影片剪辑 mcA 就属于相对路径,这里的上一级用 _patent 表示。因为 mcA 是 mc1 的上一级,在 mc1 的时间轴上加上:

_parent._x ;

意思是访问 mc1 的上一级 mcA 的 x 坐标,转换为绝对路径即:

_root.mcA._x;

使用相对路径有两层意思,一是以自己为起点向上访问,需要用 _parent 。二是以自己为起点向下访问,只需用点运算符。

范例 2-14 :使用相对路径访问变量

( 1 )打开 Flash MX 2004 ,新建一个 Flash 文档。

( 2 )建立如图 2.20 所示影片剪辑实例及其结构,图 2.20 中的名称代表它们的实例名。

图 2.20 影片剪辑的关系

( 3 )单击主场景的第 1 帧,打开【动作】面板,输入下列代码:

var root_var = "_root";

// 在主场景中定义一个字符串变量,代表主场景

( 4 )在四个影片剪辑实例的时间轴的第 1 帧上分别定义一个变量,如下所示:

在 mcB 中:

var mcB_var = "mcB";

在 mc2 中:

var mc2_var = "mc2";

在 mcA 中:

var mcA_var = "mcA";

在 mc1 中:

var mc1_var = "mc1";

( 5 )在 mcB 的时间轴上的第 1 帧上输入下列代码:

trace(_parent.root_var);

( 6 )测试影片,输出 _root 。

在这个范例中, _root 是 mcA 的上一级,即 _root 是 mcA 的父级,要在 mcA 的时间轴上访问 _root 中的变量 root_var ,只需向上访问一级,表示如下:

_parent.root_var;

而 mcA 又是 mc1 的父级,要在 mc1 的时间轴上访问 _root 中的变量 root_var ,需向上访问两级,表示如下:

_parent._parent.root_var;

mcB 是 _root 的下一级,即 mcB 是 _root 的子级。要在 _root 的时间轴中访问 mcB 的变量 mcB_var ,只需用点运算符,向下访问一级,表示如下:

mcB._mcB_var;

同样的,要在 mcB 的时间轴上访问 mc2 中的变量,表示如下:

mc2._mc2_var;

要在 _root 的时间轴上访问 mc2 中的变量,要向下访问二级,表示如下:

mcB.mc2._mc2_var;

要在 mc2 的时间轴中访问 mc1 中的变量 mc1_var ,先向上访问二级,再向下访问二级,表示如下:

_parent._parent.mcA.mc1.mc1_var;

源文件见“ 2-14.fla ”(文件路径:配套光盘 源文件 part2 2-14.fla )。

试一试: 在本例的基础上,做如下修改:

( 1 )在 mcA 中访问 mc2 中的变量。

( 2 )在 mc2 中访问 mcA 中的变量。

分别用 trace() 语句输出。

注意: 在定义主场景中按钮的动作脚本时,访问主场景中的变量不用加路径。

通过【动作】面板的【插入目标路径】按钮可把实例的路径自动添加到【动作】面板中,这给编程带来了很多方便。

打开源文件“ 2-14.fla ”,单击第 1 帧,按 F9 打开【动作】面板,单击【动作】面板上的【插入目标路径】按钮 ,弹出【插入目标路径】对话框,如图 2.21 所示。

图 2.21 【插入目标路径】对话框

利用【插入目标路径】对话框可添加实例的相对路径和绝对路径。单击【插入目标路径】对话框中【绝对】单选按钮,再单击要插入目标路径的实例名,即可显示出相关实例的绝对路径,单击【确定】按钮可把路径添加到动作面板中。如图 2.22 所示。

图 2.22 实例的绝对路径

双击主场景中的实例 mcB ,单击时间轴的第 1 帧,打开【动作】面板上的【插入目标路径】对话框, 单击【相对】单选按钮,再单击要插入目标路径的实例名,可显示出相关实例的相对路径。

另外,要获取相对路径还可用上一节的方法:先获得绝对路径,理清楚各个影片剪辑实例的层次关系,再决定向上还是向下访问。

2.4.3 动态路径

影片剪辑一般通过手工创建,通过【属性】面板可以设定影片剪辑实例的实例名,通过实例名和路径就可以访问不同层次的影片剪辑实例。但有些影片剪辑的实例是通过程序来创建的,例如通过复制函数可以复制出若干个新的电影剪辑实例,它们的实例名也是在程序中指定的。要访问这些复制出来的影片剪辑实例,最好的方法是用动态路径。

动态路径是利用数组运算符来实现的,在范例 2-14 中可以使用绝对路径访问 mcA :

_root.mcA

如果用动态路径可以这样表示:

_root[“mc”+”A”]

注意: 动态路径使用数组运算符“ [ ] ”实现,路径和实例名间没有点运算符 。

使用动态路径的好处是可以批量实现路径。假如主场景中有影片剪辑实例 mc1 、 mc2 、 … 、 mc100 ,假如用绝对路径,要写 100 行程序,用动态路径就非常方便,因为这些实例名有一定的规律,开头两个字母是一样是,都是 mc ,后面的数字可用一个变量 n 来表示,因为变量是可以变化的,表示如下:

_root[“mc”+n]

Flash 中的关键字 this 代表自己,如果不用 _root ,可用 this 来指定,如:

this[“mc”+n]

使用 this 的前提是不使用其它路径,就是指当前路径,这里指的是主场景。

使用动态路径时也可以用相对路径,如:

_parent[“mc”+n]

如果有多重路径,要访问主场景下的 mcA 下的 mc1 到 mc100 ,可以这样表示:

_root.mcA[“mc”+n]

范例 2-15 :使用动态路径批量更改影片剪辑的属性

( 1 )打开 Flash MX 2004 ,新建一个 Flash 文档。

( 2 )在主场景的【图层 1 】上建立五个影片剪辑,实例名分别为 mc1 、 mc2 、 mc3 、 mc4 、 mc5 。

( 3 )新建一层,在此层第 1 帧上输入下列代码:

var n = 1;

// 定义变量 n ,初始值为 1

( 4 )在第 2 帧插入空白关键帧,输入下列代码:

_root["mc"+n]._visible = false;

// 设置影片剪辑实例为不可见

( 5 )在第 3 帧插入空白关键帧,输入下列代码:

n += 1;

// 变量 n 加 1

gotoAndPlay(2);

// 跳到第 2 帧并播放

( 6 )测试影片,可以看到全部的影片剪辑实例都变化不可见。

源文件见“ 2-15.fla ”(文件路径:配套光盘 part2 源文件 2-15.fla )。

分析 : 此范例中,在第 1 帧中定义一个初始值为 1 的变量 n ,当运行到第 2 帧时,因为 n=1 , _root["mc"+n]._visible = false 的作用是相当于 _root.mc1._visible=false ,所以 mc1 变为不可见。运行第 3 帧, n 加 1 ,变为 2 ,然后跳到第 2 帧,使 mc2 变为不可见。由于第 2 和 3 帧不断循环, n 不断加 1 ,使场景上影片剪辑实例一个个变为不可见。

试一试: :把第 2 帧上代码改为:

this["mc"+n]._visible = false;

测试影片看看效果。

动态路径在实际编程中的运用非常广泛,它大大提高了程序的编写效率,有关动态路径的更多应用将在后面的章节中讲解。

PII应用程序开发

翻译:zjs35

zjs35.5dblog.com

这部分内容将教你怎样用ActionScript 2.0构建完整的应用程序,你将学会架起和建立一个OO对象的最好实践,并学会UI组件和MC怎样适合一个有好结构的flash应用程序,你还将学会怎样和其它开发者共享代码和使用其它人开发的代码库。这此都将帮助你建立一个可升级的、扩展的、稳定的应用程序。

第11章 一个纯OOP的应用程序框架

Flash is notoriously open-ended,If there are several of ways to skin a cat, there are even more ways to build a Flash application.(大致意思是flash建立应用程序的方法太多了)flash的弹性能让开发者混淆,特别是它们建立第一个应用程序时。通过提供一个清晰的怎样构建一个OOP的应用程

[1] [url=http://www.chinamx.com.cn/Article/websj/flash/flashas/200605/20060516233759_3641_2.html][2] [3] [4] [5] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有