AS3 OOP:按钮未显示



我正在学习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);

除此之外,我认为您的代码没有问题。

希望得到帮助,祝你好运!

最新更新