AS3与AS2的差异(简明列表)

以前的程序是 AS2 写的,因为要用到 JSON ,感觉AS3方便些,没想到语言之间的差别不小,以下是遇到的一些问题的整理。

官方的详细差异列表:http://livedocs.adobe.com/flash/9.0_cn/ActionScriptLangRefV3/migration.html

 

Object 不再是默认类型,无类型变量引入

在 ActionScript 2.0 中,下面的两行代码等效,因为缺乏类型注释意味着变量为 Object 类型:
var someObj:Object;
var someObj;
但是,ActionScript 3.0 引入了无类型变量这一概念,这一类变量可通过以下两种方法来指定:
var someObj:*;
var someObj;
无类型变量与 Object 类型的变量不同。二者的主要区别在于无类型变量可以保存特殊值 undefined,而Object 类型的变量则不能保存该值,如果赋给它undefined,则会被转换为null

#inlude 不再需要#

以前使用 #include “mycodefile.as”,现在只需要 include “mycodefile.as” 就行了。

getURL 的变化

AS2:   getURL("javascript:ClearPreviousPhotoInfo()"); 

          getURL("http://www.cfh.ac.cn/",”_blank”); 

AS3:

    var targetURL:URLRequest = new URLRequest("http://www.chinaontology.net/");
    navigateToURL(targetURL,"_blank");

 

带下划线的变量不需要下划线了

_root 变为 root ;其他的如 _x, _y,_visible,_width,_height,_parent 等等都是直接去掉下划线。

注意:

_xscale 变为 scaleX; _yscale 变为 scaleY;

_xmouse 变为 mouseX;_ymouse 变为 mouseY;

 

scale 值的表示方式改变

AS2  _xscale = 200  表示 200%

AS3 scaleX = 2  表示 200%

 

文本框变量不能再用了

AS2 里面创建一个文本框,直接赋给一个变量;代码中操作变量即可。现在不能这样用了。

AS3 里面需要给文本框实例命名,然后使用文本框的 text 属性即可,更加面向对象。这个修改还是不错的。

例如:  DocTitle.text = "文章标题";

 

按钮点击事件

AS2 里面,创建一个按钮实例 BtnOK,则点击它的事件这样写:

BtnOK.onPress = function()

{

alert(" BtnOK is Pressed! ");

}

AS3 里面需要修改为

function OK_Clicked(event:MouseEvent):void
{

      alert(" BtnOK is Pressed! ");
}

BtnOk.addEventListener(MouseEvent.CLICK, OK_Clicked);

 

访问父级对象里面的变量

AS2 里面,主时间轴上代码有个 DebugMsg 变量,记录了调试信息;在子对象 MessageBox 的 ShowDebug 方法中可以这样引用这个变量:  _level0.DebugMsg

AS3 里面这样用:

主时间轴上  var DebugMsg:String = "这是调试信息!";

子对象里面这样引用: MovieClip(this.parent).DebugMsg   此时 this.parent 指定的是 DisplayObjectContainer 类,需要将其转换为 MovieClip 对象,才能像 AS2 那样。

 

_global 没有了,不能再用了

 

取得对象的尺寸与屏幕的尺寸

屏幕内有 MC1  ,则  stage.width 与 MC1.width 是一样的(BT!!)

stage.width 语义不是屏幕的尺寸, stage.stageWidth 才是。 height的处理同理

 

初始化参数的传递

AS2 里面直接将参数放在Html文档的Object标签当中作为变量,每个参数可以独立放置。然后在 _root0 上就可以取得。

AS3 里面不行了,方法是:

(1)需要将参数放在 swf 文件后面

<param name="movie" value="View.swf?myname=bruce" />

(2)在Object 标签当中添加 FlashVars 变量

<param name="FlashVars" value="sex=man&myname=bruce" />

取得参数需要

var param:Object = root.loaderInfo.parameters;
var MyName = param["myname"];

文献:有关参数传递的安全性话题 http://www.slideshare.net/taobaoued/flashxhtml-3432665

 

MovieClipLoader 取消,以 Loader 取代,使用方法大变

你可能感兴趣的:(职场,列表,休闲)