stage.addEventListener внутри пакета? - PullRequest
       3

stage.addEventListener внутри пакета?

0 голосов
/ 29 декабря 2010

Я пытаюсь сделать что-то вроде этого:

package com.clicker{
    import flash.display.*;
    import flash.events.MouseEvent;

    public class Stager extends MovieClip {

        public function clicker():void {
            stage.addEventListener(MouseEvent.CLICK, do_stage);
        }
        function do_stage(e:MouseEvent):void {
            trace("stage clicked");
        }

    }
}

Но я получаю ошибку 1009.

Когда я делаю это:

import com.clicker.*;

var test:Stager = new Stager();
test.clicker();
addChild(test); 

Пожалуйста, помогите мне. Большое спасибо заранее и счастливых праздников.

Ответы [ 2 ]

8 голосов
/ 29 декабря 2010

этап доступен только тогда, когда ваш компонент добавлен на сцену.Если вы хотите это знать, вы можете использовать событие ADDED_TO_STAGE.

Итак, вы можете сделать это:

package com.clicker{
    import flash.display.*;
    import flash.events.*;

    public class Stager extends MovieClip {

        public function clicker():void {
            addEventListener(Event.ADDED_TO_STAGE, init);
        }
        private function init(e:Event):void {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            stage.addEventListener(MouseEvent.CLICK, do_stage);
        }
        function do_stage(e:MouseEvent):void {
            trace("stage clicked");
        }

    }
}
0 голосов
/ 10 октября 2011

, поскольку вы вызываете test.clicker(); до того, как он добавлен на сцену test еще не имеет объекта this.stage, попробуйте:

public class Stager extends MovieClip {

    public function clicker():void {
       this.addEventListener( Event.ADDED_TO_STAGE , function(ev:Event) {
             stage.addEventListener(MouseEvent.CLICK, do_stage);
       });

    }
    function do_stage(e:MouseEvent):void {
        trace("stage clicked");
    }

}

надеюсь, это поможет ...

...