我正在学习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");
}
}
}
不幸的是,它甚至没有将按钮添加到舞台上,没有错误或任何东西......任何想法都错了?
答案 0 :(得分:2)
以下是您可能犯的一些错误:
检查是否可以通过框架脚本添加RedButton实例
var rButton:RedButton = new RedButton(); 的addChild(rButton);
除此之外我认为你的代码没有问题。
希望有所帮助,祝你好运!
答案 1 :(得分:2)
好像您忘了将外部对象添加到舞台上。
请务必按照以下方式添加:
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);
}
然而,这不是一个很好的做法,因为它会促进一种内向外的观点,这可能会在以后造成麻烦。