词条 | AS动作脚本 |
释义 | 发展(· Flash Player 2 · Flash Player 3 · Flash Player 4 · Flash Player 5 · Flash Player 6 · Flash Player 7 · Flash Player 8 · Flash Player 8.5 · Flash Player 9) 简述flash中用到的脚本语言,在flash中十分重要,用它可以实现flash动作的实现 定义AS是ActionScript的缩写 ActionScript 动作脚本 是遵循 ECMAscript第四版 的 Adobe Flash Player 运行时环境的编程语言。它在 Flash Player内容和应用程序中实现交互性、数据处理、以及其他功能。 ActionScript 是由 Flash Player 中的 ActionScript虚拟机(AVM)来执行。 ActionScript代码通常被编译成“字节码格式”。 ActionScript 的主要 IDE 是 Adobe 公司的 Flash 和 Flex,最新版本 CS3(即flash9.0 和 flex3.0),2007年4月上市。 发展从macromedia大刀阔斧对As1.0进行改革到AS2.0,这一段过程看上去还算长一些,从flashmx到flash mx2004到flash 7.2再到flash8. 它们的核心actionscript都是as2.0.在flash8刚刚发布不长时间,macromedia又紧罗密鼓的推出了flash9预览版,大家都已经知道了Adobe发布的预览版可以对AS3.0进行编译,而As3.0经过测试它的速度可以说要比之前的as2.0快10倍.拿着as3.0与As2.0相对比,虽然有些东西看着面熟,但它看上去就象是重写的一种新语言一样.还有随之推出的adobe的Flex 2.0 builder. Flex sdk.让许多人一时不知所措 · Flash Player 2第一个支持脚本的版本,包括控制时间轴的gotoAndPlay, gotoAndStop, nextFrame和nextScene等动作。 · Flash Player 3增强了载入外部SWF文件的基本脚本支持(loadMovie)。 · Flash Player 4第一个完全实现脚本功能(称为动作)的播放器。这些脚本拥有简练的语法和对循环,条件,变量和其它基本语言结构的支持。 · Flash Player 5第一个拥有真正意义上的ActionScript的版本。依据ECMAScript并采用基于原型编程,并允许完全的 过程序编程和面向对象编程。 · Flash Player 6增加了事件处理模型,并且支持switch。 · Flash Player 7Flash Player 7 提供一些新特性如支持CSS显示文本和增强显示效果。 Macromedia Flash编译器和Flash Player 7同时支持基于ECMAScript 4 Netscape Proposal的类编程语言ActionScript 2.0。不过ActionScript 2.0能交叉编译成ActionScript 1.0的字节码,因此它能运行于Flash Player 6。 · Flash Player 8增加用于运行时图象数据控制和文件上传的新类库及APIs,ActionScript 2.0功能更为完善。 · Flash Player 8.5(计划于2006春发布release版本,currently in public beta):增加ActionScript 3.0和一个称为AVM2(ActionScript Virtual Machine 2)新的虚拟机,它可以与前版本AVM1共存以便支持旧内容。增强性能是该版本的主要目标。 · Flash Player 92007发表,这是adobe收购Macromedia后的第一个版本,并且也是Mac OS X上第一个Universal版本的Flash Player。 基本记法ActionScript 2.0 下面打印Hello World。值得注意的是这只能在整合环境下执行,因为trace函式只有支持整合环境。 trace("Hello world!"); 下面代码利用onMouseMove事件当鼠标移动时输出现行鼠标位置。同样的这只有在整合环境下执行。 onMouseMove = function () { trace("X: "+_root._xmouse); trace("Y: "+_root._ymouse); }; 这个较先进的范例创造一个包括数字与字符串的数组,并利用原形函式(prototype function)与函式递归给变量名num指定一个数,给变量str指定一个字符串。然后,利用MovieClip应用程序接口,文字区域被显示在屏幕上,文字区域里头写入了变量值。 var my_Array:Array = new Array("Hello", "ActionScript", 3, 7, 11, "Flash"); Array.prototype.pickNumber = function():Number { var rand:Number = random(this.length); return (typeof (this[rand]) == "number") ? this[rand] : this.pickNumber(); }; Array.prototype.pickString = function():String { var rand:Number = random(this.length); return (typeof (this[rand]) == "string") ? this[rand] : this.pickString(); }; var num:Number = my_Array.pickNumber(); var str:String = my_Array.pickString(); _root.createTextField("txt", 1, 10, 10, 530, 390); txt.text = "Array = "+my_Array+"\Random Number = "+num+"\Random String = "+str; ActionScript 3.0 下面先进的Hello World程序目前需要在Flex 2.0公开Alpha测试版整合环境中编译。 package { import flash.text.TextField; import flash.display.MovieClip; import flash.filters.DropShadowFilter; public class HelloWorld extends MovieClip { public function HelloWorld() { var shad:DropShadowFilter = new DropShadowFilter(2, 45, 0x000000, 25, 3, 3, 2, 2); var txt:TextField = new TextField(); txt.textColor = 0xFFFFFF; txt.filters = [shad]; txt.width = 120; txt.x = Math.random()*300; txt.y = Math.random()*300; txt.selectable = false; txt.text = "Hello World! ["+Math.round(txt.x)+","+Math.round(txt.y)+"]"; addChild(txt); //-----ActionScript3.0----------------- //as3.0最重要的概念就是在效能方面的增进,平时所加入的任何事件都可以被监听或从内存中移除 //以下例子就是监听与移除内存占用,这是as3.0最重要的基础概念 bt1.addEventListener(MouseEvent.CLICK,bt1_click); function bt1_click(e:MouseEvent):void{ //触发的事件内容; } //该按纽监听不需要时则remove掉,增加效能 bt1.removeEventListener(MouseEvent.CLICK,bt1_click); Flash脚本语言影片控制语法:gotoAndPlay(Scene,Frame); 将播放头跳转到场景中指定的帧并从该帧开始播放, 标签范例:gotoAndPlay("Scene 1", 1); gotoAndStop:将播放头跳转到场景中指定的帧(标签)并停止播放 NextFrame :下一帧 goto PreviousFrame:前一帧 nextscene:下一个场景 previousscene :前一个场景 FrameLabel:关键帧中定义的标签位置 语法:on (mouseEvent); 范例:on (press) { 指定触发动作的鼠标事件或按键 startDrag(""); } MouseEvent 可分为以下几类。 Press:鼠标指针在按钮上,并按下按钮 Release:鼠标指针在按钮上,按下后放开按钮 on Release Outside:当鼠标指针滑到按钮上时按下鼠标按钮,然后在释放鼠标按钮前滑出 此按钮区域 Roll Over:鼠标指针滑过按钮 Roll Out:鼠标指针滑出按钮外 Drag Over:当鼠标指针滑到按钮上时按下鼠标按钮,然后滑出该按钮区域,接着滑回 到该按钮上 Drag Out:当鼠标指针滑到按钮上时按下鼠标按钮,然后滑出此按钮区域 Key Press:(“key”)按下指定的键盘按键 play 语法:play(); 开始播放影片或继续往前播放 stop 语法:stop(); 停止播放影片 stopAllSounds 语法:stopAllSounds; 停止所有正在播放中的音乐文件 浏览器/网络语法:fscommand (command,parameters); 使SWF 文件能够与Flash Player 或 fscommand 嵌入Flash Player 的程序(如 Web 浏览器 )进行信息传递,范例:fscommand ("fullscreen","true"); 续表 Flash Player 的指令。 Fullscreen (true/false):以全屏方式打开播放器 Allowscale (true/false):允许影片放大或缩小 Showmenu (true/false):显示单击鼠标右键时的菜单 Trapallkeys (true/false):传送所有按键事件至onClipEvent Exec (true/false):执行一项内部指令 Quit:关闭播放器 语法:loadVariables (URL,level/target,Variables); 从外部文件中读取数据,例如文本文件,或是CGI、ASP 或PHP 脚本产生的文本。然后在影片内设置变量值 范例:on(release){ loadVariables loadVariablesNum ("MX.txt", 0 ); } 语法:getURL (URL,Window,Variables); 打开网页的相对或绝对地址,与超级链接的作用是相同的,可从链接网页URL 中加载影片、JPG,选择性地传递变量,加载到当前动画影片中。 getURL 范例:getURL ("(网址)", "_blank"); 语法:loadMovieNum (URL,level/target,Variables) loadMovie 范例:loadMovieNum ("picture.jpg",0) unloadMovie 语法:unloadMovieNum (level/target) 取消已载入的动画影片 影片剪辑控制当 SWF 文件正在播放时,创建一个 影片剪辑的实例。无论播放头在原始影片剪辑中处于什么位置,在重复的影片剪辑中,播放头始终从第 1 帧 开始 语法:duplicateMovieClip (target,new name,depth); duplicateMovieClip 范例:duplicateMovieClip ("/game","new game",2); removeMovieClip 语法:removeMovieClip ("target"); 删除指定的影片剪辑 可用鼠标拖动已定义实体名称的影 片剪辑,一次只能拖动一个。一旦 执行,该影片剪辑保持可拖 动状态,直到用stopDrag 明确停止拖动为止,或是对另一个影片剪辑做 startDrag 的动作命令 语法:startDrag (target,lock,[left,top, right,bottom]); 范例:on (press) { startDrag startDrag startDrag ("/happy",true,0,350,210); startDrag 的动作命令 语法:stopDrag (); 范例:on (release) stopDrag 停止当前的拖动操作 stopDrag (); 续表 语法:onClipEvent (movieEvent) {} 范例:onClipEvent (load) { 事件处理函数:触发去执行那些指派 gotoAndStop (3) 给一个影片剪辑的动作命令 MovieEvent 可分为以下几类。 Load:载入动画影片 Unload:删除动画影片 onClipEvent EnterFrame:进入每一帧(都会启动action) MouseMove:每次移动鼠标时启动此动作 MouseDown:按住鼠标左键 MouseUp:放开鼠标左键 KeyDown:按住键盘的一个按键,使用Key.getCode 去读取最后被按下的按键 KeyUp:放开键盘的一个按键,使用Key.getCode 去读取最后被放开的按键 Data :在 loadVariables() 或 loadMovie() 动作中接收到数据时启动该动作。当与 loadVariables() 动作一起指定时,data 事件只在加载最后一个变量时发生一次 当影片播放时,更改影片剪辑的属 语法:setProperty (target, property, value) setProperty 性值,如Alpha 、Width、Visible、 范例:setProperty ("happy",_alpha= 30); Rotation 等 在指定的ClipEvent 事件触发后,刷 updateAfterEvent 语法:updateAfterEvent() 新屏幕显示,可以避免刷新网页时的 屏幕闪烁 变量语法:delete (reference) 范例:account = new Object(); account.balance = 5000; delete account; 设置变量的值,可运用【运算法】的 方式设置其为字符串或数值。和大多 语法:variable = value 数的程序语言一样,设置变量名称 set variable 范例:x= random(15) + 6; 时,变量名称的第一个字需为英文而 不能是数字,而在Flash 中变量是没 有大小写之分 语法:var variableName 范例:var x; var y = 1; 声明变量 var z = 3, w = 4; var s, t, u = z; 语法:with (object) {statement} with 范例:with (_root.apple) { 使用with 控制影片剪辑 gotoAndStop (3); 判断条件/循环语法:break; 范例:var i = 0; while (true) { 命令Flash 跳过循环体的其余部分, if (i >= 100) { 停止循环动作,并执行循环语句之后 break; 的语句 出现在几种循环类型中,会先跳过循 环里的其余部分再执行: 在while 循环内,会回到循环顶端再 度测试条件。 continue 语法:continue; 在do while 里会到循环底部测试条件。 在for 内,会跳过循环的判断位置。 在for...in 内,会回到循环顶端,处理 下一个枚举值 执行语句,然后只要条件为 true,就 do while 语法:do {statement;} while (condition); 计算循环中的条件 当if 语句的条件返回false 时,就执 else 语法:else {statement;} 行要运行的语句 先判断init (初始值)一次,然后开始 做循环,只要condition (条件)的计 for 语法:for (init; condition; next) {statement} 算结果是true,就执行要运行的语句, 然后再重新判断 语法:if (condition) {statement;} 范例:if (mx = 5){ 当if 的condition 条件式为true 时, if play(); 就执行要运行的语句 } 计算条件,如果条件计算结果为 while 语法:while (condition) {statement;} true,则在循环返回以再次计算条件 之前执行一条语句或一系列语句 打印打印指定影片剪辑的所有Frame,若 只想打印特定几页时,请在要打印的 Frame 加上Frame Lable:#print 语法:print (target,method); 范例:print ("fish","bmovie"); Method 可分为以下3 种: Bmovie :指明以电影的边界区域(bounding area )作为打印区域。可以在编写环境 (authoring)中,在那几个帧附上标签:#b。 Bmax:可指定这个混合各个边界区域的参数,来作为打印范围。 Bframe:缩放每格的对象大小,来填满打印的页面 7.自定义函数 在被调用帧中执行脚本,而不将播放 头移动到该帧 call 语法:call (frame) 语法:function functionname ([parameters]) {statement } function 范例:function Circle(radius) { 自定义函数 this.radius = radius; } method 语法:object.method = function ([parameters]) { }; 自定义对象的方法 语法:return [expression]; 指定函数返回一个值,如单独使用 return 范例:function sum (a,b,c) { return 或函数循环执行时,没有这个 return a + b + c; 命令,则函数返回null } 8.各种动作 在测试模式下,计算表达式并在 trace 语法:trace (expression); 【输出】面板中显示结果,适用于 侦错 在Actions 中加上批注说明文字,以 语法:// comment 避免Actions 太混杂难以理解,此功 comment 范例:// 这是一个计数器的判断式 能对于往后的维护工作,甚至是程序 二次开发都相当有帮助 () 范例:gotoAndPlay("Scene 1"1) 范围 "" 范例:tellTarget("/game") 字符串 1.数学运算符 + 加 范例:a = 10 ; b = 5 e = a + b // e = 15 - 减 c = a - b // c = 5 * 乘 g = a * b // g = 50 / 除 h = a/b // h = 2 % A/B 的余数 i = a % b // i = 0 2.比较运算符 = 等于 范例:a = 50; b = 30; c = 20 < 小于 b < a > 大于 a > c <= 小于等于 if (c <= b) >= 大于等于 if (a >= c) != 不等于 if (a != b) 语法:escape(expression) 范例:k = escape("Happy New Year"); 将参数转换为字符串,并以 URL 编 escape trace(k) 码格式对其进行编码 结果:Happy%20New%20Year 语法:eval(expression) 范例:on (release) { x = “3”; 按照名称访问变量、属性、对象或影 eval trace (eval (“x”); 片剪辑,返回该变量或属性的值 } 结果:3 语法:getProperty(instancename, property) getProperty 返回指定属性的值 范例:getPrperty(_root.fish,_x) 返回自SWF 文件开始播放时起已经 getTimer 语法:getTimer() 过的毫秒数 返回一个包含Flash Player 版本与平 台信息的字符串,此函数在 getVersion 语法:getVersion() Test-movie Mode (测试电影模式)不 会执行 返回一个包含Movie Clip 对象的目 targetPath 语法:targetpath(movieClipObject) 标路径字符串 语法:unescape(x) 范例:k = unescape("Happy%20 New%20Year"); 将 URL 编码格式的字符串转换成 unescape trace(k) ASCII 字符格式 结果:Happy New Year 1.转换函数 Boolean 语法:Boolean (expression) 转换指定的参数到布尔值类型 Number 语法:Number (expression) 转换指定的参数到数字类型 转换指定的参数到字符串类型 Actions 语法/范例 说明 _alpha 语法:instancename. _alpha=value; 范例:kewpie._alpha=30; 设置影片剪辑的透明值。有效值是0 (全透明)到100(不透明) _visible 语法:instancename._visible,"boolean"; 范例:apple.visible = 1 决定instancename 参数指定的影片 是否看得见 _target 语法:instancename._target 获取影片剪辑的目标路径 _rotation 语法:instancename._rotation; 范例:setProperty ("movieclip" _rotation=30); 设置影片剪辑的旋转角度 _name 语法:instancename._name 范例:setProperty("movieclip" _name, "string"); 获取影片剪辑的实例名称 _framesloaded 语法:_framesloaded = x; 范例:happy._framesloaded = 25; 确定特定帧及其前面所有帧的内容 是否已经加载,并且是否可在浏览 器本地使用。参数:x 为时间轴上的 帧数 _droptarget 语法:myMovieClip._droptarget 范例:if (happy._droptarget == root.trash) { happy._visible = false; } 返回该影片剪辑的绝对路径 _currentframe 语法:_currentframe; 范例:gotoAndStop (_currentframe+5) 结果:引导影片前进 5 格 获取影片剪辑的当前帧 _totalframes 语法:_totalframes; 范例:if (_currentframe=_totalframes) 获取影片剪辑的总帧数 _quality 语法:_quality = x; 电影的质量,x 值包括低(low)、 中等(medium)、高(high)或最 好(best) _focusrect 语法:_focusrect =Boolean 当按Tab 键浏览时,按钮上是否有个 黄色的边框出现 _soundbuftime 语法:instancename._soundbuftime 范例:setProperty ("happy "_soundbuftime, "5"); 指定在声音开始进入流之前,预先缓 冲的秒数 _url 语法:instancename._url; 范例:setProperty ("happy" _url,"(网址)" 读取网址(URL)位置的影片剪辑 String 语法:String (expression) 参数:expression 要被转换成字符串 的数字、布尔式或表达式 2.数学函数 判断数据内容是否为数值,如果不是 isNaN 语法:isNaN (expression) 数值则返回true 将字符串转换为浮点数,直到此函数 parseFloat 语法:parseFloat(string) 遇到不是初始数字一部分的字符 将字符串转换成整数,并进一步设置 parseInt 语法:parseInt(expression, [radix]) 数值的进制 设置影片剪辑的x 坐标,左上角默认 _x 语法:instancename._x 为(0,0) _y 语法:instancename._y 设置影片剪辑的y 坐标 语法:instancename._xmouse _xmouse 获取鼠标位置的x 坐标 范例:happy._xmouse = 50 语法:instancename._ymouse _ymouse 获取鼠标位置的y 坐标 范例:happy._ymouse = 50; 语法:instancename._xscale 从注册点开始应用的水平缩放比例, _xscale 范例:setProperty ("movieclip"_xscale, "70"); 以百分比表示。默认注册点为(0,0) 语法:instancename._yscale 从注册点开始应用的垂直缩放比例, _yscale 范例:setProperty ("movieclip"_yscale, "60"); 以百分比表示。默认注册点为 (0,0) 语法:instancename._width = value; _width 设置影片剪辑的宽度 范例:setProperty ("movieclip",_width, "80"); 语法:instancename._height= value; _height 设置影片剪辑的高度 范例:setProperty ("movieclip",_height, "50") 五、对象-核心-Date Actions 语法/范例 说明 new Date (构造函数) 语法:new Date(year,month,date, hour, min,sec,ms); 范例:now = new Date(); trace(now) 结果:Thu Mar 7 16:01:20 GMT+0800 2001 创建Date 对象 getDate 语法:mydate.getdate(); 范例:now = new Date(); mydate = now.getDate() trace (mydate); 按照本地时间返回指定的 Date 对 象中表示月中某天的值(1 到 31 之 间的整数) getDay 语法:mydate.getday(); 范例:now = new Date(); myday = now.getDay() trace (myday); 按照本地时间返回指定的 Date 对 象中表示周几的值(0 代表星期日, 1 代表星期一,以此类推) getFullYear 语法:mydate.getfullyear(); 范例:now = new Date(); myfullyear = now.getfullyear() trace (myfullyear); 按照本地时间返回指定的 Date 对 象中的完整年份值(一个 4 位数, 如2002) getHours 语法:mydate.gethours(); 范例:now = new Date(); myhours = now.gethours() trace (myhours); 按照本地时间返回指定的 Date 对 象中的小时值(0 到 23 之间的 整数) getMinutes 语法:mydate.getminutes(); 范例:now = new Date(); myminutes = now.getminutes() trace (myminutes); 按照本地时间返回指定的 Date 对 象中的分钟值(0 到 59 之间的 整数) getMonth 语法:mydate.getmonth(); 范例:now = new Date(); mymonth = now.getmonth() trace (mymonth); 按照本地时间返回指定的 Date 对 象中的月份值(0 代表一月,1 代表 二月,以此类推) getSeconds 语法:mydate.getsecondes(); 范例:now = new Date(); myseconds = now.getseconds() trace (myseconds); 按照本地时间返回指定的 Date 对 象中的秒钟值(0 到 59 之间的 整数) toString 语法:mydate.tostring(); 将日期转换成可读的字符串值 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。