|
首页 | 名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
该教程具体介绍了使用ActionScript编写脚本时应遵循的基本语法规则,是AS初学者的必读教程…… 使用ActionScript编写脚本时,假如使用正常模式的动作面板,通过菜单和列表选择选项,可以创建简朴的动作。要想用ActionScript编写功能强盛的脚本,你就必须深入了解和学习Flash MX的ActionScript脚本语言。 像其它脚本语言相同,ActionScript也有变量、函数、对象、操作符、保留要害字等语言元素,有它自己的语法规则。ActionScript答应用户创建自己的对象和函数。ActionScript的语法和风格与javascript异常相似,但不完全一样。ActionScript拥有自己的句法和标点符号使用规则,这些规则规定了一些字符和要害字的含义,以及它们的书写顺序。例如,在英语中用句号结束一个句子,而在ActionScript中则用分号结束一个语句。 下面列出的是ActionScript的一些基本语法规则,对于比较比较特殊的规则,请参阅ActionScript词典。 1.点语法 在ActionScript中,点(.)被用来指明与某个对象或电影剪辑相关的属性和方式。它也用标识指向电影剪辑或变量的目标路径。点语法表达式由对象或电影剪辑名开始,接着是一个点,最后是要指定的属性、方式或变量。例如,表达式ballMC.x是指电影剪辑实例ballMC的_X属性,_X电影剪辑属性指出编辑区中电影剪辑的X轴位置。 例如,submit是在电影剪辑form中设置的一个变量,而form又是嵌套在电影剪辑shoppingCart中的电影剪辑。表达式shoppingCart.form.submit=true的作用是设置实例form的submit变量的值为true。 表达一个对象或电影剪辑的方式遵循一样的模式。例如,ballMC实例的play方式用于移动ballMC的时间轴播放头,就像下面的语句: ballMC.play(); 点语法使用两个特别的别名:_root和_parent。别名_root是指主时间轴。可以使用_root别名创建一个绝对路径。例如,下面的语句调用主时间轴中电影剪辑functions的buildGameBoard函数: _root.functions.buildGameBoard(); Flash MX答应使用别名_parent来引用嵌套当前电影剪辑的电影剪辑。也可以用_parent创建一个相对目标路径。例如,假如电影剪辑dog被嵌套在电影剪辑animal之中,那么,在实例dog上的下列语句告诉animal电影剪辑停止播放: _parent.stop(); 2.斜杠语法 Flash的以前版本是使用斜杠语法指出电影剪辑或变量的目标路径的。Flash MX播放器仍旧支持这种语法,但不推荐使用。在斜杠语法中,斜杠被用来代替点,用以标明电影剪辑或变量的路径。要指出一个变量,可以在变量前加上冒号,如下面的语句所示: myMovieClip/childMovieClip:my Variable 我们现在用点语法取代上述斜杠语法来表示上面的目标路径: myMovieClip.childMovieClip.myVariable 斜杠语法在tellTarget动作中使用最为普遍,但这种动作在Flash MX中已不再推荐使用。 【说明】与其使用tellTarget动作还不如使用with动作与点语法兼容。 3.大括号 ActionScript语句用大括号({})分块,如下面的脚本所示: on(release){ myDate = new Date(); currentMonth = myDate.getMonth(); } 4.分号 ActionScript语句用分号(;)结束,但假如你省略语句结尾的分号,Flash仍旧可以成功地编译你的脚本。例如,下面的语句用分号结束: colum = passedDate.getDay(); row = 0; 同样的语句也可以不写分号: colum = passdDate.getDay() row = 0 5.圆括号 定义一个函数时,要把参数放在圆括号中: function myFunction (name, age, reader){ … } 调用一个函数时,也要把要传递的参数放在圆括号中: myFunction ("Steve",10,true); 圆括号可以用来改变ActionScript的运算优先级,或使自己编写的ActionScript语句更轻易阅读。 也可以用圆括号来计算点语法点左边的表达式。例如,在下面的语句中,圆括号使表达式new color(this)得到计算,并创建了一个新的颜色对象: onClipEvent(enterFrame){ (new Color(this)).setRGB(oxffffff); } 在上例中,假如不使用圆括号,就需要在代码中增加一个语句来计算它: onClipEvent(enterFrame){ myColor = new Color(this); myColor.setRGB(0xffffff); } 6.大小写字母 在ActionScript中,只有要害字区分大小写。对于其余的ActionScript,可以使用大写或小写字母。例如,下面的语句是等价的: cat.hilite = true; CAT.hilite = true; 但是,遵守一致的大小写约定是一个好的习惯。这样,在阅读ActionScript代码时更易于区分函数和变量的名字。假如在书写要害字时没有使用准确的大小写,你的脚本将会出现错误。例如下面的两个语句: setProperty(ball,_xscale,scale); setproperty(ball,_xscale,scale); 前一句是准确的,后一句中property中的p应是大写而没有大写,所以是错误的。在动作面板中启用彩色语法功能时,用准确的大小写书写的要害字用蓝色区别显示,因而很轻易发现要害字的拼写错误。 7.注释 需要记住一个动作的作用时,可在动作面板中使用comment(注释)语句给帧或按钮动作添加注释。假如你在协作环境中工作或给别人提供范例,添加注释有助于别人对你编写的脚本的准确理解。 在动作面板中选择comment动作时,字符“//”被插入到脚本中。假如在你创建脚本时加上注释,即使是较复杂的脚本也易于理解,例如: on(release){ //建立新的日期对象 myDate = new Date(); currentMonth=myDate.getMonth(); //把用数字表示的月份转变为用文字表示的月份 monthName = calcMoth(currentMonth); year = myDate.getFullYear(); currentDate = myDate.getDat(); } 在脚本窗口中,注释内容用粉红色显示。它们的长度不限,也不影响导出文件的大小。 8. 要害字 ActionScript保留一些单词,专用于与本语言之中。因此,不能用这些保留字作为变量、函数或标签的名字。下表列出了ActionScript中所有的要害字:
【注重】这些要害字都是小写形式,不能写成大写形式。 9.常量 常量有其值永不改变的属性。常数用大写字母列于动作工具箱中。例如,常数BACKSPACE、ENTER、QUOTE、RETURN、SPACE和TAB是Key对象的属性,指键盘上的键。要测试用户是否在按Enter键,可使用下面的语句: if(keycode()= =key.ENTER){ alert = "你预备好了吗?" controlMC.gotoAndStop(5); } ActionScript中的术语 ActionScript根据特定的语法规则使用特定的术语。以下按字母顺序介绍重要的ActionScript术语. Actions(动作):是指导Flash电影在播放时执行某些操作的语句。例如,gotoAndStop动作就可以将播放头转变到指定的帧或帧标记。 Action(动作)也可以被称作statement(语句)。 Arguments(参数):是答应将值传递给函数的占位符。例如,以下语句中的函数welcome就使用了两个参数firstName和hobby来接收值: function welcome(firstName,hobby) { welcomeText = "Heelo," + firstName + "I see you enjoy" + hobby; } Classed(类):是各种数据类型。用户可以创建“类”并定义对象的新类型。要定义对象的类,用户需创建构造器函数。 Constants(常量):是不会改变的元素。常量对于值的比较异常有用。 Constructors(构造器):是用来定义“类”的属性和方式的函数。以下代码通过创建Circle构造器函数生成了一个新的Circle类。 function Circle(x, y, radius) { this.x = x; this.y = y; this.radius = radius; } Data types(数据类型):是可以执行的一组值和操作。ActionScript的数据类型包括:字符串、数值、逻辑值、对象和影片剪辑。 Events(事件):是在电影播放过程中发生的动作。例如,当电影裁入时、当播放头到达某一帧时、当用户单击按钮或影片剪辑时、当用户按压键盘上的按钮时,都会产生不同的操作。 Expressions(表达式):是可以产生值的语句。例如2+2就是一个表达式。 Functions(函数):是可以重复使用和传递参数的代码段,可以返回一个值。例如,getProperty函数就可以使用影片剪辑的实例名称和属性名称,返回属性值。getVersion函数可以返回当前播放电影的Flash播放器的版本。 Handlers(句柄):是可以治理诸如mouseDown和load事件的特别动作。例如,onMouseEvent和onClipEvent就是ActionScript的句柄。 Identifiers(标识符):是用来指示变量、属性、对象、函数或方式的名称。标识符的首字母必须是字符、下划线(_)或美元符号($)。后续字符可以是字符、数字、下划线或美元符号。例如,firstName就是一个变量名。 Instances(实例):是属于某些class(类)的对象。每个类的实例都包含该类的所有属性和方式。例如,所有影片剪辑实例都包含MovieClip类的属性(透明度属性、可见性属性)和方式(例如gotoAndPlay、getURL等)。 Instance names(实例名称):是一个唯一的名称。可以在脚本作为目标被指定。 Keywords(要害字):是具有特别意义的保留用词。例如,var就是一个要害字,它可以用来定义本地变量。 Methods(方式):是指定给对象的函数。在函数被指定给对象之后,该函数就可以被称为是该对象的方式。 Objects(对象):是属性的集合。每个对象都有自己的名称和值。对象答应用户访问某些类型的信息。例如,ActionScript的预定义对象Date就提供了系统时钟方面的信息。 Operands(运算项):是由表达式中的运算符操控的值。 Operators(运算符):可以从一个或多个值中计算获得新值。例如,将两个数值相加就可以获得一个新值。 Parameters(参数):也被称之为Arguments(参数)。 Properties(属性):是定义对象的attributer(属性)。例如,所有影片剪辑对象都具有_visible(可见性)属性,通过该属性可以决定影片剪辑是否显示。 Target paths(目标路径):是Flash电影中影片剪辑名称、变量和对象的垂直分层结构地址。主时间轴的名称是_root。影片剪辑属性检查器中可以命名影片剪辑的实例。 用户可以通过目标路径使动作指向影片剪辑,也可以使用目标路径获取或设置变量的值。例如,以下示例语句就是影片剪辑stereoControl内部的变量volume的路径: -root.stereoControl.volume Variables(变量):是存储了任意数据类型值的标识符。变量可以创建、修改和更新。变量中存储的值可以被脚本检索使用。在以下的示例中,等号左边的是变量标识符,右边的则赋予变量的值: x = 5; name = "Lolo"; customer.address = "66 7th Street"; c = new Color(mcinstanceName); 编写ActionScript脚本 编写Flash动作脚本并不需要用户对ActionScript有完全的了解,用户的需求才是真正的目标。有了设计创意之后,用户要做的就是为此选择恰当的动作、属性、函数或方式。学习ActionScript的最佳方式是创建脚本。用户可以在动作面板的帮助下建立简朴脚本。一旦认识了在电影中添加诸如play和stop这样的基础动作之后,用户就可以开始学习更多有关ActionScript的知识。要使用ActionScript的强盛功能,最重要的是了解ActionScript语言的工作原理:ActionScript语言的基础概念、元素以及用来组织信息和创建交互电影的规则等。 1.脚本的规划和调试 在为整个电影编写脚本时,脚本的数量和变化可以可能都是巨大的。例如,用户可能需要考虑以下问题:决定使用哪些动作,如何建立更有效的脚本结构,以及在哪些地方放置脚本?所有这些问题都需要经过仔细规划和测试。特殊是当电影变得越来越复杂时,这些问题更加显得突出。 在开始编写脚本之前,用户需明确自己要达到的目标。例如,这些目标可能是使用Flash创建整个站点。 ? 询问站点访问者姓名,并且在整个站点中重复使用该信息。 ? 站点具有一个可拖动的导航工具栏,可以帮助用户跳转到站点的任意分支。 ? 当某一个按钮被单击时,新的内容以淡入方法出现在舞台中心。 ? 专门设立一个和用户联系的场景,其中包含已经填入用户姓名的表单。 在明确了制作动画要达到的目的之后,用户就可以开始创建对象并编写脚本来控制这些对象。 让脚本按照自己需要的方法工作,这通常比编写脚本要花费时间。用户需要常常不断地测试自己的脚本是否工作正常。为达到目的,最好的方式是从简朴脚本开始,频繁测试,编写并测试完一部分可正常工作的脚本之后,就可以保存文件的一个版本。这种工作方式可以帮助用户更有效地调试脚本错误,在编写更加复杂的脚本时也有坚实的基础。 2.面向对象的脚本编程 在面向对象的编程方式中,用户通过将信息分类成组来组织信息。用户可以创建某一类信息的多个实例,以便在脚本中使用。用户可以使用ActionScript预定义的class(类),也可以创建自己的类。ActionScript内置的类位于动作在板的Objects(对象)文件夹。 在创建class(类)时,用户需为由该类所创建的每个对象定义所有属性(特性)和方式(行为)。这和现实世界中对象的定义方式相同。例如,“人”具有诸如性别、身高和头发颜色之类的属性,“人”的行为包括说话、走路、投掷等,在本示例中,“人”就是一个类,而每个单独的人就是该类的实例,即Object(对象)。 ActionScript中的对象可以包含数据,也可以是舞台上的影片剪辑。所有影片剪辑都是预定义的MovieClip类的实例。每个影片剪辑实例都有MovieClip类的所有属性(例如_height,高度;_rotation,旋转;_totalframes,总帧数等)和所有方式(例如,gotoAndPlay,转到并播放;loadMovie,载入电影;startDrag,开始拖动等)。 要定义class(类),用户需创建一个特别的被称为“构造器”的函数。Flash预定义的类已经定义了构造器函数。例如,假如需要电影中一个骑车人的信息,则可以创建一个名为Biker的构造器函数。该函数包括“时间”和“距离”属性,也包含“速度”方式,该方式可以将骑车人的移动速度告诉用户。 function Biker(t, d) { this.time = t; this.distance = d; } function Speed() { return this.time/this.distance; } Biker.prototype.rate = Speed; 在编写构造器函数之后,用户就可以创建Biker类的副本,即:实例。以下代码就可以创建Biker类对象的实例emma和hamish: emma = new Biker(30, 5); hamish = new Biker(40,5); 实例之间还可以相互通信。例如,对于Biker类的对象来说,用户可以创建一个shove(推)的方式,让一个骑车人推另外一个骑车人。这样,当hamish实例靠得太近时,emma实例就可以调用shove方式,将hamish推开。要将信息传递给方式,可使用参数。例如,shove(推)方式就可以携带who(被推者)和howFar(推多远)参数,如下列示例。 emma.shove(hamish, 10); 在面向对象编程方式中,类可以按指定顺序相互接收属性和方式,这就是所谓的继续。用户可以使用继续扩展或重定义类的属性和方式,从其他类继续属性和方式的类被称为“子类”,将属性和方式传递给其他类的类被称为“超类”,一个类可以同时是“子类”和“超类”。 3.脚本的流程 Flash将从第一行语句开始执行ActionScript语句,一直按次序执行到最终语句或ActionScript指定跳转到的语句。 将执行次序发送到其他地方而不是下一语句的动作包括:if语句、do…while循环和return动作。 if语句被称为条件判定语句或“逻辑分支”,因为它是基于某些条件的评估判定来控制脚本流程的。例如,以下代码就将检查变量mynumber中的值是否否小于或等于10,假如检查结果返回true(例如,mynumber的值为5),则变量alert被设置文本字符串值,并在输出的文本域中显示其值。 if (myNumber <=10) { alert = “The number is less than or equal to 10”; } 用户也可以添加else语句来创建更加复杂的条件判定语句。在以下示例中,假如条件判定返回true(例如,变量mynumber的值为3),则第一组大括号之间的语句将执行,alert变量将显示第二行的值。假如条件判定返回false(例如,变量mynumber的值为30),则第一组代码区将被跳过,else语句后面的大括号之间的语句将执行。 if (myNumber <=10) { alert = “The number is less than or equal to 10”; }else { alert = “The number is greate than 10”; } 循环语句将重复执行某一动作若干次,直到满意某一条件才结束。在以下示例中,影片剪辑将被复制5次。 i = 0; do { duplicateMovieClip ("myMovieClip","newMovieClip"+i,i); newName = eval("newMovieClip"+i); setProperty(newName,_x,getProperty("myMovieClip",_x)+(i*5)); i=i+1 }while(i<=5); 4.脚本的运行 在编写脚本时,用户可以使用动作面板,将脚本附加给时间轴中的帧,也可以附加给舞台上的按钮或影片剪辑。附加给帧的脚本将在播放头到达该帧时执行,而附加给按钮或影片剪辑的脚本则在某一事件发生时执行。所谓的“事件”,可以是电影播放时鼠标移动、某个按钮被按下,也可以是某个影片剪辑被载入等。使用ActionScript可以发现操作发生的时间,然后根据该事件执行指定的脚本。 附加给按钮或影片剪辑的动作被一个特别的动作包围,该动作被称之为handler(处理程序),onClipEvent和on动作都被称之为处理程序,中因为它们操控或治理着操作。用户可以为每个处理程序指定一个或多个操作。当由处理程序指定的事件发生时,影片剪辑或按钮动作才执行。假如要在不同的事件发生时执行不同的动作,则可以给一个对象附加多个处理程序。 onClipEvent动作处理的是影片剪辑的事件,而on动作则处理按钮的事件。用户也可以和影片剪辑一起使用on动作,创建一个能接受鼠标事件的影片剪辑。 返回类别: Flash教程 上一教程: Flash实用编程五---下雨动画的制作 下一教程: Flash视频教程:东风破 您可以阅读与"ActionScript的基本语法规则"相关的教程: · Flash5 ActionScript入门学习-Action Script基本语法1 · ActionScript入门学习-Action Script基本语法2 · Flash ActionScript 基本语法小总结 · AS的基本代码解释 · FLASH函数的基本概念 |
快精灵印艺坊 版权所有 | 首页会员中心在线印刷在线编辑付款方式索取样品设计指南连锁门店 |