Как использовать прослушиватели событий мыши вне класса документа? - PullRequest
0 голосов
/ 02 марта 2012

Извините, если это вопрос новичка, но: как мне использовать прослушиватели событий мыши вне моего класса документа.У меня есть следующий упрощенный класс документов:

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 Ответ

2 голосов
/ 02 марта 2012

Ваш 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()).

...