Flash5 ActionScript入门学习-Action Script基本语法1
类别: Flash教程
Action Script基本语法
????变量与常量
???? 变量的名字不可是使用特殊符号,而且要尽量避免使用flash中已经存在的关键字。
???? Flash 5中使用变量不需要预先申明,而且不区分局部变量和全局变量的申明。但是奇怪的是,Flash 5中却提供了var关键字,而且对var关键字说明是用于定义(局部)变量,但是笔者经过测试,发现完全不用使用var来申明一个变量,而且所谓传统意义上的局部变量申明根本不起作用。请看下面一段程序:
???? Function test(){
???? Var x;
???? x+=1;
???? }
???? x=1;
???? test();
???? 程序执行完毕之后,x的结果将是2;
???? 申明变量的好处在于可清楚掌握变量的生命周期,能增强程序的可调试性和易读性。Flash 5提供了delete关键字,在一个变量生命周期结束的时候可以用delete来释放这个变量。请看下面的程序:
???? var y;
???? function test(){
???? var x;
???? x=2;
???? y=x-1;
???? delete x;
???? }
???? test();
???? 执行结果为y=1,变量x被释放;这样看起来x好象起到了局部变量的作用。但是假如您在程序中还有一个全局变量x的话,test函数中的var变量申明将会被忽略,对x的任何引用和赋值都是针对全局变量x,如果不注意的话,将导致程序的异常。
???? 但是,还有一种特殊的情况,局部变量和全局变量将被区分开来。那就是函数调用时候的参数,将作为函数中的一个局部变量,对参数变量的任何赋值并不会影响同名的全局变量。如下所示的例子:
???? x=3;
???? function test(x)
???? {
???? x=1;
???? a=x;
???? }
???? test(x)
???? 程序执行之后的结果是a=1,x=3。从这个例子可以看出test函数中的x参数的确是作为函数内部的局部变量来处理了。
???? 除了上面的特例之外,在Flash 5中,并非没有局部变量的概念。局部变量只能存在于某一个Movieclip之中,换一句话说,就是一个MC中定义的变量相对于整个场景来说将成为该MC的局部变量。比如一个名字为test的MC,其中定义了一个MC参数x,那么这个参数x将只会在该MC范围内起作用,在该MC中对x的赋值将不会影响全局变量x,也当然不会影响其它MC中的x变量喽。
???? Flash 5还提供了一些常量,使用非常方便。如常量对象Mouse、Key、Math等。这些对象不可以用来初始化一个实例对象,只能被直接调用,如Mouse.hide()就可以隐藏鼠标,而Math.PI就代表圆周率了。关于这些对象的详细说明请参看附录。
????操作符
???? Flash 5提供的操作符全部列表在下面,用法完全相同于Java script。
???? 算术操作符
???? * 乘号 + 加号 - 减号 / 除号
???? ++ 变量自加一 -- 变量自减一 % 取余数
????逻辑操作符
???? ! 逻辑非 != 不等于 && 逻辑与 < 小于
???? <= 小于等于 <> 不等于 == 相等 > 大于
???? >= 大于等于 and 逻辑与 not 逻辑非 or 逻辑或
???? | | 逻辑或
????位操作符
???? & 位与 | 位或 ~ 补位 ^ 位异或
???? << 位左移 >> 位右移 >>> 位右移(无符号)
????复合操作符
???? %= A%=B 等效于 A=A%B
???? &= A&=B 等效于 A=A&B
???? *= A*=B 等效于 A=A*B
???? += A+=B 等效于 A=A+B
???? -= A-=B 等效于 A=A-B
???? /= A/=B 等效于 A=A/B
???? <<= A<<=B 等效于 A=A<<B
???? >>= A>>=B 等效于 A=A>>B
???? >>>= A>>>=B 等效于 A=A>>>B
???? ^= A^=B 等效于 A=A^B
???? |= A|=B 等效于 A=A|B
????字符串操作符
add 连接两个字符串
eq A eq B 字符串A值与字符串值B相等
ge A ge B 字符串A值大于等于字符串B值
gt A gt B 字符串A值大于字符串B值
le A le B 字符串A值小于等于字符串B值
lt A lt B 字符串A值小于字符串B值
ne A ne B 字符串A值不等于字符串B值
其它
???? "" 字符串 () 括号 = 赋值
???? typeof 返回变量类型
????条件语句
???? if语句
???? if语句的一般形式是:
???? if(条件表达式)
???? { …}
???? else{ …}
???? else if(判断条件){ …}
???? ….
???? else if语句可以有无限多个。
???? Flash 4中使用的是VB Script语法: if… else if… end if,在Flash 5中不再适用。
????IfFrameLoaded语句
???? IfFrameLoaded语句的一般形式是:
???? ifFrameLoaded(<场景名称>,<桢编号>)
???? { …}
???? 该语句为Flash特有的条件语句,用于判定某个桢是否已经被载入。
???? 该语句的详细解释及其例子请参看附录。
???? Flash 5中不支持switch语句。
????循环语句
???? Flash 5提供了四种循环语句,其中前三种是大家所熟悉的Java script循环语句,而第四种却是Flash 5所特有的循环语句。
???? Do语句
???? Do语句的一般形式是:
???? Do
???? 循环体
???? while(条件表达式);
????while语句
???? while语句的一般形式是:
???? while(条件表达式)
???? 循环体
????for语句:
???? for语句的一般形式有两种:
???? for(初始化语句;条件表达式;递增语句)
???? 循环体
????for(递增语句 in 对象)
???? 循环体
????流终止语句
???? 在Flash 5中提供了三种流终止语句。Bread语句用于退出循环语句和标号块。continue语句用于跳转道循环体末尾最后一行语句。Return语句用于退出一个方法或程序体。他们的用法与Java script中用法相同。
????跳转语句
???? Flash 5中提供了goto语句,值得注意的是它是Flash 5特有的语句,其用法并不同于其它高级语言中的goto语句。Flash 5中的goto语句是专门用于在不同的桢和场景中进行切换的。根据所填写参数的不同,goto语句还有几种不同的变形形式,如下:
???? gotoAndPlay( [场景名,]<桢编号|桢标签|表达式>);
???? 根据编号或者标签或者表达式结果,跳转到某一特定场景的某一个特定桢,并且继续动画的播放。
???? gotoAndStop( [场景名,]<桢编号|桢标签|表达式>);
???? 根据编号或者标签或者表达式结果,跳转到某一特定场景的某一个特定桢,并且停止动画的播放。
???? gotoAndPlay( <桢编号|桢标签|表达式> );
???? 根据编号或者标签或者表达式结果,在同一个场景中跳转到某一特定桢,并且继续动画的播放。
???? gotoAndStop( <桢编号|桢标签|表达式> );
???? 根据编号或者标签或者表达式结果,在同一个场景中跳转到某一特定桢,并且在该桢停止动画的播放。
???? nextFrame();
???? 跳转并停止在下一桢。
???? prevFrame();
???? 跳转并停止在上一桢。
???? nextScene();
???? 跳转到下一场景。
???? prevScene();
???? 跳转到前一场景。
???? 通过goto语句可以灵活的实现场景的切换和桢流的控制,特别是在结合标签的使用后。
????标签
???? Flash 5中的标签是专门用于标识一个桢的,程序中无法定义一个标签。标签的唯一用途就在于给一个桢起一个有意义的名字。标签的合理利用可以大大提高程序的可阅读性和可维护性,不仅是利于掌握动画流程,而且利于程序的结构化和代码重用。当然,在Flash 5中已经提供了定义函数的方法,但是标签所起到的作用却仍然是不可替代的。利用标签来控制动画流要比用桢编号好的多,相信有经验的用户都已经深有体会;而用标签来实现一个函数的定义和调用也是相当的简洁明了的,您至少可以很快的找到您所定义的函数在什幺地方,而这是function所定义的函数所不能达到的。但是,用一个标签结合一个桢定义函数不能够传递参数,唯一的方法就是通过全局变量来实现。
???? 引用一个标签的Action只有goto语句和call语句。
????函数
???? Flash 5中函数定义的一般形式是:
???? function <函数名> (参数表)
???? { 函数体 }
???? Flash 5中的函数无需定义返回类型,但是它可以返回任何一种类型的值。函数只可以传递值参,参数只在函数体内起作用,相当于该函数内部的局部变量,它们的生命周期随着函数生命周期的结束而结束。为函数返回一个值可以使用return语句。函数不支持递归调用,但是当递归调用函数的时候,语法检查并不报错,只是递归函数执行结果将与预期的结果不同。
???? 例:
???? function test( x, y )
???? {
???? x=1;
???? y=2;
???? return x+y;
???? }
???? x=3;
???? y=4;
???? a=test(x,y);
???? b=x+y;
???? 程序运行后结果如下:
???? x=3, y=4, a=3, b=7;
????除了自定义函数以外,Flash 5还提供了一些所谓的“库函数”,至于库函数有哪些,请参看附录。
????变量与常量
???? 变量的名字不可是使用特殊符号,而且要尽量避免使用flash中已经存在的关键字。
???? Flash 5中使用变量不需要预先申明,而且不区分局部变量和全局变量的申明。但是奇怪的是,Flash 5中却提供了var关键字,而且对var关键字说明是用于定义(局部)变量,但是笔者经过测试,发现完全不用使用var来申明一个变量,而且所谓传统意义上的局部变量申明根本不起作用。请看下面一段程序:
???? Function test(){
???? Var x;
???? x+=1;
???? }
???? x=1;
???? test();
???? 程序执行完毕之后,x的结果将是2;
???? 申明变量的好处在于可清楚掌握变量的生命周期,能增强程序的可调试性和易读性。Flash 5提供了delete关键字,在一个变量生命周期结束的时候可以用delete来释放这个变量。请看下面的程序:
???? var y;
???? function test(){
???? var x;
???? x=2;
???? y=x-1;
???? delete x;
???? }
???? test();
???? 执行结果为y=1,变量x被释放;这样看起来x好象起到了局部变量的作用。但是假如您在程序中还有一个全局变量x的话,test函数中的var变量申明将会被忽略,对x的任何引用和赋值都是针对全局变量x,如果不注意的话,将导致程序的异常。
???? 但是,还有一种特殊的情况,局部变量和全局变量将被区分开来。那就是函数调用时候的参数,将作为函数中的一个局部变量,对参数变量的任何赋值并不会影响同名的全局变量。如下所示的例子:
???? x=3;
???? function test(x)
???? {
???? x=1;
???? a=x;
???? }
???? test(x)
???? 程序执行之后的结果是a=1,x=3。从这个例子可以看出test函数中的x参数的确是作为函数内部的局部变量来处理了。
???? 除了上面的特例之外,在Flash 5中,并非没有局部变量的概念。局部变量只能存在于某一个Movieclip之中,换一句话说,就是一个MC中定义的变量相对于整个场景来说将成为该MC的局部变量。比如一个名字为test的MC,其中定义了一个MC参数x,那么这个参数x将只会在该MC范围内起作用,在该MC中对x的赋值将不会影响全局变量x,也当然不会影响其它MC中的x变量喽。
???? Flash 5还提供了一些常量,使用非常方便。如常量对象Mouse、Key、Math等。这些对象不可以用来初始化一个实例对象,只能被直接调用,如Mouse.hide()就可以隐藏鼠标,而Math.PI就代表圆周率了。关于这些对象的详细说明请参看附录。
????操作符
???? Flash 5提供的操作符全部列表在下面,用法完全相同于Java script。
???? 算术操作符
???? * 乘号 + 加号 - 减号 / 除号
???? ++ 变量自加一 -- 变量自减一 % 取余数
????逻辑操作符
???? ! 逻辑非 != 不等于 && 逻辑与 < 小于
???? <= 小于等于 <> 不等于 == 相等 > 大于
???? >= 大于等于 and 逻辑与 not 逻辑非 or 逻辑或
???? | | 逻辑或
????位操作符
???? & 位与 | 位或 ~ 补位 ^ 位异或
???? << 位左移 >> 位右移 >>> 位右移(无符号)
????复合操作符
???? %= A%=B 等效于 A=A%B
???? &= A&=B 等效于 A=A&B
???? *= A*=B 等效于 A=A*B
???? += A+=B 等效于 A=A+B
???? -= A-=B 等效于 A=A-B
???? /= A/=B 等效于 A=A/B
???? <<= A<<=B 等效于 A=A<<B
???? >>= A>>=B 等效于 A=A>>B
???? >>>= A>>>=B 等效于 A=A>>>B
???? ^= A^=B 等效于 A=A^B
???? |= A|=B 等效于 A=A|B
????字符串操作符
add 连接两个字符串
eq A eq B 字符串A值与字符串值B相等
ge A ge B 字符串A值大于等于字符串B值
gt A gt B 字符串A值大于字符串B值
le A le B 字符串A值小于等于字符串B值
lt A lt B 字符串A值小于字符串B值
ne A ne B 字符串A值不等于字符串B值
其它
???? "" 字符串 () 括号 = 赋值
???? typeof 返回变量类型
????条件语句
???? if语句
???? if语句的一般形式是:
???? if(条件表达式)
???? { …}
???? else{ …}
???? else if(判断条件){ …}
???? ….
???? else if语句可以有无限多个。
???? Flash 4中使用的是VB Script语法: if… else if… end if,在Flash 5中不再适用。
????IfFrameLoaded语句
???? IfFrameLoaded语句的一般形式是:
???? ifFrameLoaded(<场景名称>,<桢编号>)
???? { …}
???? 该语句为Flash特有的条件语句,用于判定某个桢是否已经被载入。
???? 该语句的详细解释及其例子请参看附录。
???? Flash 5中不支持switch语句。
????循环语句
???? Flash 5提供了四种循环语句,其中前三种是大家所熟悉的Java script循环语句,而第四种却是Flash 5所特有的循环语句。
???? Do语句
???? Do语句的一般形式是:
???? Do
???? 循环体
???? while(条件表达式);
????while语句
???? while语句的一般形式是:
???? while(条件表达式)
???? 循环体
????for语句:
???? for语句的一般形式有两种:
???? for(初始化语句;条件表达式;递增语句)
???? 循环体
????for(递增语句 in 对象)
???? 循环体
????流终止语句
???? 在Flash 5中提供了三种流终止语句。Bread语句用于退出循环语句和标号块。continue语句用于跳转道循环体末尾最后一行语句。Return语句用于退出一个方法或程序体。他们的用法与Java script中用法相同。
????跳转语句
???? Flash 5中提供了goto语句,值得注意的是它是Flash 5特有的语句,其用法并不同于其它高级语言中的goto语句。Flash 5中的goto语句是专门用于在不同的桢和场景中进行切换的。根据所填写参数的不同,goto语句还有几种不同的变形形式,如下:
???? gotoAndPlay( [场景名,]<桢编号|桢标签|表达式>);
???? 根据编号或者标签或者表达式结果,跳转到某一特定场景的某一个特定桢,并且继续动画的播放。
???? gotoAndStop( [场景名,]<桢编号|桢标签|表达式>);
???? 根据编号或者标签或者表达式结果,跳转到某一特定场景的某一个特定桢,并且停止动画的播放。
???? gotoAndPlay( <桢编号|桢标签|表达式> );
???? 根据编号或者标签或者表达式结果,在同一个场景中跳转到某一特定桢,并且继续动画的播放。
???? gotoAndStop( <桢编号|桢标签|表达式> );
???? 根据编号或者标签或者表达式结果,在同一个场景中跳转到某一特定桢,并且在该桢停止动画的播放。
???? nextFrame();
???? 跳转并停止在下一桢。
???? prevFrame();
???? 跳转并停止在上一桢。
???? nextScene();
???? 跳转到下一场景。
???? prevScene();
???? 跳转到前一场景。
???? 通过goto语句可以灵活的实现场景的切换和桢流的控制,特别是在结合标签的使用后。
????标签
???? Flash 5中的标签是专门用于标识一个桢的,程序中无法定义一个标签。标签的唯一用途就在于给一个桢起一个有意义的名字。标签的合理利用可以大大提高程序的可阅读性和可维护性,不仅是利于掌握动画流程,而且利于程序的结构化和代码重用。当然,在Flash 5中已经提供了定义函数的方法,但是标签所起到的作用却仍然是不可替代的。利用标签来控制动画流要比用桢编号好的多,相信有经验的用户都已经深有体会;而用标签来实现一个函数的定义和调用也是相当的简洁明了的,您至少可以很快的找到您所定义的函数在什幺地方,而这是function所定义的函数所不能达到的。但是,用一个标签结合一个桢定义函数不能够传递参数,唯一的方法就是通过全局变量来实现。
???? 引用一个标签的Action只有goto语句和call语句。
????函数
???? Flash 5中函数定义的一般形式是:
???? function <函数名> (参数表)
???? { 函数体 }
???? Flash 5中的函数无需定义返回类型,但是它可以返回任何一种类型的值。函数只可以传递值参,参数只在函数体内起作用,相当于该函数内部的局部变量,它们的生命周期随着函数生命周期的结束而结束。为函数返回一个值可以使用return语句。函数不支持递归调用,但是当递归调用函数的时候,语法检查并不报错,只是递归函数执行结果将与预期的结果不同。
???? 例:
???? function test( x, y )
???? {
???? x=1;
???? y=2;
???? return x+y;
???? }
???? x=3;
???? y=4;
???? a=test(x,y);
???? b=x+y;
???? 程序运行后结果如下:
???? x=3, y=4, a=3, b=7;
????除了自定义函数以外,Flash 5还提供了一些所谓的“库函数”,至于库函数有哪些,请参看附录。
-= 资 源 教 程 =-
文 章 搜 索