2011-05-24 367 views

回答

1

在AS3中,您可以更有策略地構建和組織您的應用程序lot。它比AS2更快,更整潔,也更受推薦。主要區別在於,您可以開發具有比AS2更強的OOP影響的Flash應用程序。

AS3使用Greensock的Tweenlite,Papervision 3D和box2d等第三方代碼更容易。

在AS2中,你將不得不使用原型來混亂地實現AS3中的一個類可以爲你做什麼。例如:

AS2原型:可以用來作爲基類爲您的所有影片剪輯

MovieClip.prototype.flip = function():Void 
{ 
    this._rotation += 180; 
} 

AS3類:

package 
{ 
    import flash.display.MovieClip; 

    public class MyMovieClip extends MovieClip 
    { 
     public function flip():void 
     { 
      rotation += 180; 
     } 
    } 
} 

雖然有更多的代碼中創建自己的班級,您現在可以擴展這個班級,只需從其中調用flip()即可運行flip()方法。在AS2中,您必須與您的MovieClip.prototype.flip()函數處於相同的範圍才能訪問它,這可能會導致混亂。

下面是創建一個影片剪輯,將其添加到舞臺,然後讓你的flip()功能的使用AS2和AS3比較:

AS3:

var mc:MyMovieClip = new MyMovieClip(); 
mc.flip(); 

addChild(mc); 

AS2 ::

MovieClip.prototype.flip = function():Void 
{ 
    this._rotation += 180; 
} 
var mc:MovieClip = attachMovie("your_library_mc", "newname", this.getNextHighestDepth()); 
mc.flip(); 
+0

ya謝謝。這對我很有幫助。 – Ramu 2011-06-02 05:54:26

4

除了更改庫之外,Actionscript 3還是compil編輯並運行在完全不同的虛擬機(AVM2)上,該虛擬機從頭開始重新編寫。據報道,它編譯的AS3代碼比爲AVM1虛擬機編譯的代碼腳本快10倍。

你應該爲AS2和AS3的差異列表檢查this doc,因爲他們無法解釋在SO :)

+2

而非技術性附錄:AS2是傳統語言,AS3是當前語言。添加到Flash播放器中的新功能通常不適用於AS2。 – fenomas 2011-05-25 09:23:38

0

任何更好,因爲其他幾個人都表示AS2和AS3是不同的語言,甚至可以在Flash Player,AVM和AVM2(Actionscript虛擬機)中的不同虛擬機上運行。

但是,大多數AS2代碼都有直接的AS3代碼,在時間軸代碼中,名稱通常是相同的(例如gotoAndPlay,stop等)。你可以在這裏找到一個方便的備忘單: http://actionscriptcheatsheet.com/downloads/as3cs_migration.pdf 一般來說,如果沒有AS3等同於你在AS2中擁有的AS3,那麼就有更好更強大的方法。

還有一本書叫「The ActionScript 3.0 Migration Guide」,你可能也想看看。

您還可以通過LocalConnection使AS2和AS3代碼相互通話。網上有很多關於這方面的指導。

相關問題