2014-01-20 117 views
0

我想將其他人的Flash應用程序轉換爲ActionScript 3.我現在從來沒有必須處理ActionScript。我試圖去做錯誤消息告訴我的事情,但他們正在圈我。所以這是一個簡化版本的情況。我有看起來像這樣的基礎文件夾的動作腳本:從ActionScript 2移植到ActionScript 3

class IF12345 
{ 
    var a0:controls.Button; 
    var a1:controls.TextArea; 
    var a2:controls.TextInput; 
} 

現在的控制是這樣的:

dynamic class mx.controls.Button extends mx.controls.SimpleButton 
{ 
    var enabled; 
    function Button() 
    { 
    } 
    function draw() 
    { 
    } 

    var borderW = 1; 
} 

我得到了第一個錯誤是它抱怨的動作腳本必須有一個外部可見的類,所以我添加了公共基類文件中的類。然後它說你不能沒有包裝的公開課,所以我把它包裝在一個包裏。

之後,它說一個動作腳本必須有一個控件的外部可見類,所以我添加了公共控件類。當然,它然後抱怨需要在一個包中,但是當我把控件類放入一個包中時,它說我不能有嵌套包。所以在這一點上,我不知道該怎麼辦?

+0

上次我檢查「類名只能包含字母,數字,‘_’和」 $ 「」 由於mx.controls包中包含Button類,因此不知道該動態類正在做什麼。那個班正在努力完成什麼? –

回答

1

看起來你在幾點上混淆了,但我看到的主要一點是它看起來像你試圖讓類名包括整個包。你想要的是什麼,我認爲一個工作的例子是:

package controls 
//  ^^^^^^^^ The controls package is defined here, not when providing the 
//    class name like in your example. 
{ 
    import flash.display.SimpleButton; 
    //  ^^^^^^^^^^^^^ In ActionScript 3, SimpleButton is in the 
    //     flash.display package, and needs to be imported with an 
    //     import statement above the class definition. 

    public class Button extends SimpleButton 
    //   ^^^^^^ We only use the class name here. You can do the fully 
    //     qualified class name for the extended class, but the 
    //     import statement is cleaner and makes that unnecessary 
    //     except for in uncommon circumstances. 
    { 
     private var enabled:Boolean = false; 
     private var borderW:int = 1; 

     public function Button() 
     { 
      // Constructors must be public. 
     } 

     public function draw() 
     { 
      // 
     } 
    } 
} 

而你的其他類:

package 
{ 
    import controls.Button; 
    //  ^^^^^^^^^^^^^^^ Need to import your above Button class. 

    public class IF12345 
    { 
     public var a0:Button; 
    } 
} 
+0

這非常有幫助。謝謝! – SteveDeFacto