AS3 OOP:按钮未显示

时间:2013-08-14 00:29:34

标签: actionscript-3 oop actionscript

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



    }
}

不幸的是,它甚至没有将按钮添加到舞台上,没有错误或任何东西......任何想法都错了?

2 个答案:

答案 0 :(得分:2)

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

  • External.as不是您的文档类,您尚未创建和/或添加外部类对象到舞台。
  • 如果您的设计是External.as是您的文档类,请检查它是否真的设置为文档类。如果您在属性面板中使用Flash Professional,请单击文档类输入框右侧的编辑按钮,如果创建了一个空白生成的类 - 您就会得到错误的来源。
  • 检查是否可以通过框架脚本添加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);
    }

然而,这不是一个很好的做法,因为它会促进一种内向外的观点,这可能会在以后造成麻烦。