如何在文档类之外使用鼠标事件侦听器?

时间:2012-03-02 02:37:28

标签: actionscript-3 actionscript addeventlistener

很抱歉,如果这是一个新手问题,但是:我如何在文档类之外使用鼠标事件侦听器。我有以下简化的文档类:

public class Main extends Sprite 
{
    public var realMain:State1 = new State1();

    public function Main():void 
    {
        addChild(realMain);

        //stage.addEventListener(MouseEvent.CLICK, handleClick);
    }

    /*
    *private function handleClick(e:MouseEvent):void 
    *{
    *   trace("Main");
    *}
    */
}

我希望能够在此类中使用相同的stage.addEventListener功能:

public class State1 extends Sprite
{

    public function State1() 
    {
        addEventListener(MouseEvent.CLICK, handleClick);
    }

    private function handleClick(e:MouseEvent):void 
    {
        trace("State1");
    }
}

然而,这在当前状态下不起作用;不输出“State1”。我已经看到了对Event.ADDED_TO_STAGE事件的使用的引用,但我不确定这是否是我需要做的,或者如何使用它。再说一遍,如果之前已经回答过,我很抱歉,我之前可能已经看过问题和答案了,但我还不太了解as3中我的问题的答案是什么。

1 个答案:

答案 0 :(得分:2)

您的State1为空,因此无法播放任何鼠标事件。尝试在那里画一些东西,看看它是如何工作的。

public function State1()
{
    var g:Graphics = graphics;
    g.beginFill(0);
    g.drawRect(0, 0, 200, 200);
    g.endFill();

    addEventListener(MouseEvent.CLICK, handleClick);
}

如果您只想要一个空白对象,那么只需在那里绘制一个透明矩形(将0作为第二个参数传递给beginFill())。