包中的stage.addEventListener?

0 apache-flex flash actionscript actionscript-3

我想做这样的事情:

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");
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我得到1009错误.

当我这样做:

import com.clicker.*;

var test:Stager = new Stager();
test.clicker();
addChild(test); 
Run Code Online (Sandbox Code Playgroud)

请帮我.非常感谢您提前和节日快乐.

Eph*_*ion 8

只有将组件添加到舞台时才能访问舞台.如果您想了解它,可以使用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");
        }

    }
}
Run Code Online (Sandbox Code Playgroud)