0

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



    }
}

不幸的是,它甚至没有将按钮添加到舞台上,没有错误或任何东西......知道有什么问题吗?

4

2 回答 2

2

以下是您可能犯的一些错误:

  • External.as 不是您的文档类,您尚未创建和/或将 External 类对象添加到舞台。
  • 如果 External.as 是您设计的文档类,请检查它是否真的设置为文档类。如果您在属性面板中使用 Flash Professional,请单击文档类输入框右侧的编辑按钮,如果创建了一个空白生成类 - 您就有了错误的根源。
  • 检查是否可以仅通过框架脚本添加 RedButton 实例

    var rButton:RedButton = new RedButton(); addChild(rButton);

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

希望有所帮助,祝你好运!

于 2013-08-14T01:29:51.070 回答
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);
    }

但是,这不是一个很好的做法,因为它促进了由内而外的观点,这可能会在以后引起麻烦。

于 2013-08-14T01:44:13.653 回答