2014-01-20 72 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