我正在尝试将其他人的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添加到控件类。当然它然后抱怨需要在一个包中,但是当我把控件类放在一个包中时它说我不能有一个嵌套包。所以在这一点上我不知道该怎么办?
答案 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;
}
}