我正在学习AS3 OOP并尝试做一些简单的事情,在这里我只是尝试在舞台上添加一个按钮并处理点击事件。
这是我的简单代码:
package
{
import flash.display.Stage;
import flash.display.MovieClip;
import flash.events.MouseEvent;
public class External extends MovieClip
{
private var counter:Number;
public var HitButtonA:RedButton;
public function External() // constructor
{
HitButtonA= new RedButton();
HitButtonA.x = 40;
HitButtonA.y = 65;
addChild(HitButtonA);
setupListeners();
counter=0;
}
public function setupListeners()
{ trace("bbbb");
HitButtonA.addEventListener(MouseEvent.CLICK, hitButtA);
}
public function hitButtA(e:MouseEvent)
{
//display.text=String(++counter);
trace("aaaaa");
}
}
}
不幸的是,它甚至没有将按钮添加到舞台上,没有错误或任何事情。。。知道怎么了吗?
似乎忘记将External对象添加到后台。
确保你这样添加:
var myExternal:External = new External();
stage.addChild(myExternal);
编辑:
谢谢!不管怎样,把这两行都当作一行?所以我实例化上面它被添加到阶段?
是的,如果您不需要推荐信,只需致电stage.addChild(new External());
或者,可以通过构造函数var myExternal:External = new External(this.stage);
传递阶段的引用,通过构造函数将子级添加到阶段。
然后你需要这样修改你的构造函数:
public function External(DisplayObject theStage) // constructor
{
HitButtonA= new RedButton();
HitButtonA.x = 40;
HitButtonA.y = 65;
addChild(HitButtonA);
setupListeners();
counter=0;
theStage.addChild(theStage);
}
然而,这不是一个很好的做法,因为它提倡由内而外的观点,这可能会在以后引起麻烦。
以下是您可能犯的几个错误:
- External.as不是您的文档类,您还没有创建和/或将External类对象添加到后台文件中
- 如果External.as是您设计的文档类,请检查它是否真的设置为文档类。如果您在属性面板中使用Flash Professional,请单击文档类输入框右侧的编辑按钮,如果创建了一个空白生成的类,则说明您的错误来源
-
检查您是否可以通过帧脚本添加RedButton的实例
var rButton:RedButton=新的RedButton();addChild(rButton);
除此之外,我认为您的代码没有问题。
希望得到帮助,祝你好运!