ActionScript

✍ dations ◷ 2024-12-25 01:32:56 #ActionScript

ActionScript是原Macromedia公司(后并入Adobe)为其Flash产品开发的一种基于ECMAScript的面向对象编程语言。ActionScript可用于网页制作、Adobe Flash动画和RIA应用程序的开发。

ActionScript和JavaScript均基于ECMAScript语法,因而拥有类似的语法。理论上它们互相可以很流畅地从一种语言翻译到另一种。不过JavaScript的文档对象模型是以浏览器窗口、文档和表单为主的,ActionScript的文档对象模型则以SWF格式动画为主,可包括动画、音频、文字和事件处理。

ActionScript 开发时可借由导入 ANE 作为跨平台使用;并且官方公布之认证Starling (基于OPGL协议)开放框架,可使用GPU高速绘图,而非传统的CPU运算功能。

ActionScript 首次出现于Flash 5并实现了在Flash内编程。这个版本被命名为ActionScript 1.0。Flash 6通过增加大量的内置函数和对动画元素更好的编程控制更进一步增强了编程环境的功能。Flash 7(MX 2004)引进了ActionScript 2.0,它增加了强类型和面向对象特征,如显式类声明、继承、接口和严格数据类型。ActionScript 1.0 和 2.0 使用相同的编译形式编译成Flash SWF文件。

在ActionScript 2.0里,函数馆对象(如视频片段、按钮)可与类联系在一起。类可写在外在文档文件内,并且这些文件必须有.as后缀。类是增设部分──对ActionScrip语言来说,可让程序员自行开发,虽然有许多内置类譬如MovieClip类──可被用来动态地在屏幕上画出向量──已经满足需求了。类文件可使编程更加容易,并且类文件如果需要的话可在许多项目间转移。

Flash ActionScript实现的特点如下,JavaScript程序员也许感兴趣:

ActionScript代码常常直接写在Flash开发环境。该环境提供参考、代码提示和句法强调。原代码常常与电影一起存在.fla文件里。自外部文档文件透过#include语法导入ActionScript代码也相当常见。在这种情况下,外部文件也许被Flash集成开发环境内置编译器,或Motion Twin ActionScript2编译器(MTASC)编译。

下面打印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) == "number") ? this : this.pickNumber();};Array.prototype.pickString = function():String  {   var rand:Number = random(this.length);   return (typeof (this) == "string") ? this : 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+"nRandom Number = "+num+"nRandom 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 = ;         txt.width = 120;         txt.x = Math.random()*300;         txt.y = Math.random()*300;         txt.selectable = false;         txt.text = "Hello World! ";         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);

Starling GPU 开发样本

导入 SWC 或相关 SDK 以后,在构造函数内加入以下这段,便可激活 GPU 高速框架开发相关 swf 或是跨平台软件。

var _starling = new Starling(MainGame, stage);_starling.start();

参见

参考资料

  1. ^ Standard ECMA-262. Ecma-international.org. . (原始内容存档于2015-12-30). 
  2. ^ ECMAScript. ECMAScript. . (原始内容存档于2016年5月18日). 
  3. ^ Flash Player 11 Release Notes. . (原始内容存档于2014-09-23). 
  4. ^ Flash Player 14 Release Notes. . (原始内容存档于2014-10-03). 
  5. ^ Adobe Developer Connection. www.adobe.com. . (原始内容存档于2019-08-31). 
  6. ^ Starling Features - The Cross Platform Game Engine. Gamua. . (原始内容存档于2019-08-31) (英语). 
  7. ^ Bose, Juwal. Birmingham, UK: Packt Pub https://www.worldcat.org/oclc/870467587. 2013 . ISBN 178398354X. OCLC 870467587. (原始内容存档于2019-09-19).  缺少或|title=为空 (帮助)

外部链接

相关