AS3與AS2的差異(簡明列表)

以前的程序是 AS2 寫的,因爲要用到 JSON ,感覺AS3方便些,沒想到語言之間的差別不小,以下是遇到的一些問題的整理。

 

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;

 

文本框變量不能再用了

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章