Graphics 版 (精华区)
发信人: Doitforyou (我天天都来), 信区: Graphics
标 题: Flash5ActionScript教程 十一
发信站: 哈工大紫丁香 (2001年04月29日08:56:56 星期天), 站内信件
使用ActionScript的语法
用ActionScript编写脚本时,如果使用正常模式的动作面板,通过从菜单和列表选
择选项,可以创建简单的动作。 要想用ActionScript编写功能强大的脚本,你就必须深
入了解Flash 5的ActionScript脚本语言。
象其它脚本语言一样,ActionScript也有变量、函数、对象、操作符、保留关键字
等语言元素,有它自己的语法规则。ActionScript允许用户创建自己的对象和函数。Ac
tionScript的语法和风格与JavaScript非常相似,但不完全相同。ActionScript拥有自
己的句法和标点符号使用规则,这些规则规定了一些字符和关键字的含义,以及它们的
书写顺序。例如,在英语中句号结束一个句子,而在ActionScript中则用分号结束一个
语句。
下面列出ActionScript的一些通用语法规则。大多数ActionScript术语也都有它们
自己的具体要求。对于某个专门术语的规则,却参阅ActionScript词典中相关的词条。
一、点语法
在ActionScript中,点(.)被用来指明与某个对象或电影剪辑相关的属性和方法。
它也用于标识指向电影剪辑或变量的目标路径。点语法表达式由对象或电影剪辑名开始
,接着是一个点,最后是要指定的属性、方法或变量。例如,_X电影剪辑属性指出编辑
区中电影剪辑的X轴位置。表达式ballMC._x是指电影剪辑实例ballMC的_X属性。
作为另一个例子,submit是在电影剪辑form中设置的一个变量,而form又是嵌套在
电影剪辑shoppingCart中的电影剪辑。表达式shoppingCart.form.submit = true的作用
是设置实例form的submit变量的值为true。
表达一个对象或电影剪辑的方法遵循相同的模式。例如,ballMC实例的play方法移
动ballMC的时间轴播放头,就象下面的语句:
ballMC.play();
点语法使用两个特殊的别名:_root 和_parent 。别名_root 是指主时间轴。可以
使用_root别名创建一个绝对路径。例如,下面的语句调用主时间轴中电影剪辑functio
ns的buildGameBoard函数:
_root.functions.buildGameBoard();
可以用别名_parent引用嵌套当前电影剪辑的电影剪辑。也可以用_parent创建一个相
对目标路径。 例如,如果电影剪辑dog被嵌套在电影剪辑animal之中,那么,在实例do
g上的下列语句告诉animal停止播放:
_parent.stop();
二、斜杠语法
Flash 3和4使用斜杠语法指出电影剪辑或变量的目标路径。Flash 5播放器仍然支持
这种语法,但不推荐使用。在斜杠语法中,斜杠被用来取代点,用以标明电影剪辑或变
量的路径。 要指出一个变量,可以在变量前加上冒号,如下所示:
myMovieClip/childMovieClip:myVariable
可以用点语法取代上述斜杠语法表示的目标路径:
myMovieClip.childMovieClip.myVariable
斜杠语法在tellTarget动作中使用最普遍,但这种动作在Flash 5中已不再推荐使用
。
注:现在,宁愿使用with动作而不使用tellTarget,因为with动作与点语法更兼容
。
三、大括号
ActionScript语句用大括号({ })分块,如下面的脚本所示:
on(release) {
myDate = new Date();
currentMonth = myDate.getMonth();
}
四、分号
ActionScript语句用分号结束,但如果你省略语句结尾的分号,Flash仍然可以成功
地编译你的脚本。例如,下面的语句用分号结束:
column = passedDate.getDay();
row = 0;
同样的语句也可以不写分号:
column = passedDate.getDay() row = 0
五、圆括号
定义一个函数时,要把参数放在圆括号中:
function myFunction (name, age, reader){
...
}
调用一个函数时,也要把要传递的参数放在圆括号中:
myFunction ("Steve", 10, true);
圆括号也可以用来改变ActionScript的优先级,或使自己编写的ActionScript语句
更容易阅读。
也可以用圆括号来计算点语法中点左边的表达式。例如,在下面的语句中,圆括号
使表达式new color(this) 得到计算,并创建了一个新的颜色对象:
onClipEvent(enterFrame) {
(new Color(this)).setRGB(0xffffff));
}
在上例中,如果不使用圆括号,就需要在代码中增加一个语句来计算它:
onClipEvent(enterFrame) {
myColor = new Color(this);
myColor.setRGB(0xffffff);
}
六、字母的大小写
在ActionScript中,只有关键字区分大小写。对于其余的ActionScript,可以使用
大写或小写字母。例如,下面的语句是等价的:
cat.hilite = true;
CAT.hilite = true;
但是,遵守一致的大小写约定是一个好的习惯。这样,在阅读ActionScript代码时
更易于区分函数和变量的名字。如果在书写关键字时没有使用正确的大小写,你的脚本
将会出现错误。当在动作面板中启用彩色语法功能时,用正确的大小写书写的关键字以
蓝色显示。
七、注释
需要记住一个动作的作用时,可在动作面板中使用comment语句给帧或按钮动作添加
注释。如果你在协作环境中工作或给别人提供范例,添加注释有助于别人对你编写的脚
本的理解。
在动作面板中选择comment(注释)动作时,字符//被插入到脚本中。如果在你创建
脚本时加上注释,即使是简单的脚本也易于理解:
on(release) {
// 建立新的日期对象
myDate = new Date();
currentMonth = myDate.getMonth();
// 把用数字表示的月份转换为用文字表示的月份
monthName = calcMonth(currentMonth);
year = myDate.getFullYear();
currentDate = myDate.getDat ();
}
在脚本窗口,注释内容用粉红色显示。它们的长度不限,且不影响导出文件的大小
。
八、关键字
ActionScript保留一些单词,专用与本语言之中。因此,不能用这些保留字作为变
量、函数或标签的名字。下表列出了ActionScript中所有的关键字:
break for new var
continue function return void
delete if this while
else in typeof with
要了解更多关于专用关键字的信息,请参阅ActionScript词典中相关的词条。
九、常数
常数是其值永不改变的属性。常数用大写字母列于动作工具箱和ActionScript词典
中。例如,常数BACKSPACE、ENTER、QUOTE、RETURN、SPACE和TAB是Key对象的属性,指
键盘上的键。要测试用户是否在按Enter键,使用下面的语句:
if(keycode() == Key.ENTER) {
alert = "Are you ready to play?"
controlMC.gotoAndStop(5);
}
关于数据类型
数据类型说明一个变量或ActionScript元素可以存储的信息种类。在Flash 5的Act
ionScript中有两种数据类型:原始数据类型(Primitive )和引用数据类型(Referen
ce)。原始数据类型(如字符串、数值、逻辑值)有一个常数值。因此,可以存储它们
所代表的元素的实际值。引用数据类型(如电影剪辑和对象)拥有可以改变的值。因此
,包含了对该元素的实际值的引用。存储原始数据类型数据的变量的行为在某些情况下
与存储引用数据类型数据的变量不同。每一种数据类型都有自己的规则,下面将作简要
介绍。
一、字符串
字符串是一个字符(字母、数字和标点符号)序列。在ActionScript语句中输入字
符串,使用单引号或双引号括住。字符串作为字符来处理而不是作为变量来处理。例如
,在下面的语句中,“L7”是一个字符串:
favoriteBand = "L7";
你可以用加号(+)操作符连接两个字符串。ActionScript把字符串前后的空格作
为字符串的一部分来处理。
greeting = "Welcome," + firstName;
尽管ActionScript对变量、实例名和帧标签的引用不区分大小写,但字符串是区分
大小写的。例如,下面的两个语句把不同的文本放入指定的文本域变量中,因为"Hello
" 和 "HELLO" 是字符串。
invoice.display = "Hello";
invoice.display = "HELLO";
要在字符串中包含引号,可在它前面加上反斜杠(\),这称为字符转义。在Actio
nScript中,还有一些其它的字符需要使用特殊转义序列来表示:
Escape sequence 转义序列 Character 字符
\b 退格符(ASCII 8)
\f 换页符(ASCII 12)
\n 换行符(ASCII 10)
\r 回车符(ASCII 13)
\t 制表符(ASCII 9)
\" 双引号
\’ 单引号
\\ 反斜杠
\000 - \377 八进制字节
\x00 - \xFF 十六进制字节
\u0000 - \uFFFF 十六进制双字节编码字符
二、数值
数值数据类型是一个双精度浮点数。可用数学运算符加(+)、减(-)、乘(*)、
除(、)、取模(%)、递增(++)、递减(--)处理数值。也可以使用预定义的Math(
数学)对象的方法来处理数值。下面的例子使用sqrt(平方根)方法来返回数值100的平
方根:
Math.sqrt(100);
三、逻辑值
逻辑值是true(真)或false(假)。需要时,ActionScript 也把true和false转换
为1和0。逻辑值与逻辑操作符一起,常常被用在控制脚本流动的比较语句中。例如,在
下面的脚本中,如果password的值为true,动画播放:
onClipEvent(enterFrame) {
if ((userName == true) && (password == true)){
play();
}
}
四、对象
对象是属性的集合。每个属性都有名字和值。属性值可以是任何Flash数据类型,甚
至可以是对象数据类型。这样就可以把一个对象嵌套在另一个对象之中。要指定对象和
它们的属性,可以使用点操作符。例如,在下面的代码中,hoursWorked是weeklyStats
的属性,而weeklyStats又是employee的属性:
employee.weeklyStats.hoursWorked
可以使用ActionScript的预定义对象访问和处理特定种类的信息。例如,Math(数
学)对象拥有一些方法,可以对传递给它的数值执行数学运算。下例使用了数学对象的
sqrt方法:
squareRoot = Math.sqrt(100);
ActionScript的MovieClip(电影剪辑)对象拥有一些方法,使用这些方法可以控制
编辑区中电影剪辑实例。下例使用了电影剪辑对象的play和nextFrame方法:
mcInstanceName.play();
mc2InstanceName.nextFrame();
ActionScript允许用户创建自己的对象。这样用户就可以在自己创建的动画中组织
信息。当用ActionScript给动画添加交互性时,你可能需要很多不同的信息。例如,你
可能需要用户名、一个球的速度、购物车中物品的名称、载入的帧数、用户的邮区代码
和最后的按键等等。创建一个自定义对象,你就可以把这些信息分为组,简化你的脚本
,重用你的脚本。
五、电影剪辑
电影剪辑是一种图符,这种图符可以在Flas动画中播放一个动画片段。它是与图像
元素有关的唯一一种数据类型。有了电影剪辑数据类型,就可以使用电影剪辑对象的方
法控制电影剪辑图符。使用点操作符可以调用电影剪辑的方法,如下所示:
myClip.startDrag(true);
parentClip.childClip.getURL( "http://www.macromedia.com/support/" + product)
;
--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.230.218]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.725毫秒