Graphics 版 (精华区)
发信人: Doitforyou (我天天都来), 信区: Graphics
标 题: Flash5ActionScript教程 十五
发信站: 哈工大紫丁香 (2001年04月29日09:00:09 星期天), 站内信件
在脚本中控制流向
ActionScript使用if、for、while、do...while和for...in动作,依据某个条件是
否存在执行某个动作。
一、使用“if”语句
检查一个条件是真或假(true 或false)的语句以if 开头。如果条件存在,Actio
nScript执行接下来的语句。如果条件不存在,ActionScript跳转到本代码块以外的下一
语句。
要优化你的代码的性能,首先检查最有可能存在的条件。
下面的语句测试几个条件。 else if 指定如果前面的条件是假(false)时可选的
测试。
if ((password == null) || (email == null)){
gotoAndStop("reject");
} else {
gotoAndPlay("startMovie");
}
二、重复执行动作
ActionScript可以重复执行动作,可以按指定次数重复执行,或指定条件存在时重
复执行。在ActionScript中,使用while、do...while、for和for...in动作创建循环。
1.当条件存在时重复执行动作
使用 while 语句实现。while循环先计算一个表达式,当表达式的值为真(true)
时,执行循环体中的代码。在循环体中的每个语句被执行后,再次计算表达式。 在下面
的例子中,循环执行4次:
i = 4
while (i > 0) {
myMC.duplicateMovieClip("newMC" + i, i );
i --;
}
也可以使用do...while语句创建与while循环同类的循环。在do...while循环中,表
达式的计算在代码块底部进行,因而该种循环至少运行一次,如下所示:
i = 4
do {
myMC.duplicateMovieClip("newMC" +i, i );
i --;
} while (i > 0);
2.使用内建计数器重复执行动作
使用 for 语句实现。大多数循环使用某种计数器控制循环运行的次数。可以先声明
一个变量,然后写一个语句,在每次执行循环之后增加或减少该变量的值。在for动作中
,计数器和增加计数器的语句是该动作的组成部分,如下所示:
for (i = 4; i > 0; i--){
myMC.duplicateMovieClip("newMC" + i, i + 10);
}
3.要循环处理电影剪辑或对象的子项
使用for..in 语句实现。子项包括其它电影剪辑、函数、对象和变量。下面的例子
使用trace动作在输出窗口打印循环处理的结果:
myObject = { name:’Joe’, age:25, city:’San Francisco’ };
for (propertyName in myObject) {
trace("myObject has the property: " + propertyName + ", with the value: " +
myObject
[propertyName]);
}
这个例子在输出窗口中输出如下结果:
myObject has the property: name, with the value: Joe
myObject has the property: age, with the value: 25
myObject has the property: city, with the value: San Francisco
如果希望脚本可以重复处理特定类型的子项,如仅处理电影剪辑子项。可以使用 f
or...in语句和typeof操作符。
for (name in myMovieClip) {
if (typeof (myMovieClip[name]) == "movieclip") {
trace("I have a movie clip child named " + name);
}
}
注:for..in语句重复处理对象原型链中的对象属性。如果子对象的原型是parent,
for..in也将重复处理parent的属性。
使用预定义函数
函数是指在动画中任何地方都可以重用的ActionScript代码块。如果传递特定的值
(称为参数)给函数,该函数将对这些值进行操作,并返回一个值。Flash拥有一些预定
义函数,使用这些函数可以访问某些信息,完成某些任务。 例如,冲突检测(hitTest
),获取最近一次按键的值(keycode),获取动画中设定的播放器版本号(getVersio
n)等等。
调用函数
可以从任何时间轴(包括已载入的电影剪辑)调用任一时间轴内的函数。 每个函数
都有它自己的特点,有些函数则要求传递参数。如果传递的参数多于函数所要求的个数
,多余的值被忽略。如果没有传递要求的参数,空参数被赋给undefined(未定义)数据
类型,在导出脚本时就会发生错误。必须在播放头已到达的帧中调用函数。
Flash的预定义函数列于下表:
Boolean getTimer isFinite newline scroll
escape getVersion isNaN number String
eval globalToLocal keycode parseFloat targetPath
false hitTest localToGlobal parseInt true
getProperty int maxscroll random unescape
注:字符串函数不赞成使用。因此,上表没有列出。
在专家模式中调用函数:
使用函数名,并在圆括号中传递要求的参数。下例调用initialize函数,本函数不
需要参数:
initialize();
在正常模式调用函数:
使用 evaluate 动作,并在表达式输入框中输入函数名和要求的参数:
在另一个时间轴调用函数,使用目标路径。 例如,调用在实例functionsMovieCli
p中声明的函数calculateTax,使用下面的路径:
_root.functionsMovieClip.calculateTax(total);
注:使用圆括号传递任何参数。
要了解更多关于每个函数的信息,包括不赞成使用的字符串函数,请参阅ActionSc
ript词典中相关词条。
--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.230.218]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:6.444毫秒