从ActionScript 2迁移到ActionScript 3

时间:2014-01-20 21:22:58

标签: actionscript-3 actionscript-2

我正在尝试将其他人的Flash应用程序转换为ActionScript 3.我以前从未处理过ActionScript。我试图做错误消息告诉我的事情,但是他们正在圈中运行我。所以这是情况的简化版本。我在基本文件夹中有一个动作脚本,如下所示:

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;
}

我得到的第一个错误是它抱怨动作脚本必须有一个外部可见的类,所以我在基础文件中向类中添加了public。然后它说没有包没有公共类,所以我将它包装在一个包中。

之后它说动作脚本必须有一个外部可见的类用于控件,所以我将public添加到控件类。当然它然后抱怨需要在一个包中,但是当我把控件类放在一个包中时它说我不能有一个嵌套包。所以在这一点上我不知道该怎么办?

1 个答案:

答案 0 :(得分: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;
    }
}