2010-12-29 11 views
0

Ich versuche, so etwas zu tun:stage.addEventListener in einem Paket?

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

    } 
} 

Aber ich erhalte die 1009 Fehler.

Wenn ich dies tun:

import com.clicker.*; 

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

Bitte helfen Sie mir. Vielen Dank im Voraus und Frohe Feiertage.

Antwort

8

Die Bühne ist nur zugänglich, wenn Ihre Komponente der Bühne hinzugefügt wird. Wenn Sie es wissen möchten, können Sie das Ereignis ADDED_TO_STAGE verwenden.

So können Sie dies tun:

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

da Sie test.clicker(); aufrufen, bevor es auf die Bühne test hinzugefügt haben kein this.stage Objekt noch versuchen:

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

}

hoffe das hilft ...

Verwandte Themen