2010-12-21 8 views
0

Ich habe diese Klasse und ich habe es in der gleichen Verpackung von Timeline.as (die Dokumentenklasse):Flash-CS, Referenz Wurzel aus anderer Klasse

package { 
    import flash.utils.Timer; 
    import flash.events.TimerEvent; 

    public class Counter2 extends Timer { 

     public function Counter2(delay:Number, repeatCount:int=0) { 
      super(delay, repeatCount); 
      super.addEventListener(TimerEvent.TIMER, timerHandler); 
     } 

     public override function start():void { 
      super.start(); 
     } 
     public override function stop():void { 
      super.stop(); 
     } 
     public function timerHandler(evt:TimerEvent) { 
      trace(evt.target.currentCount); 
     } 
    } 
} 

Diese Klasse in Timeline.as Konstruktor instanziiert wird. Gibt es eine Möglichkeit, Timeline (root) von dieser Klasse zu referenzieren? Und wenn ja, wie?

Danke!

Antwort

0

Das statische Stage-Objekt ist nur für Objekte in der Anzeigeliste verfügbar. Versuchen Sie, eine öffentliche Methode in Ihrer benutzerdefinierten Timer Klasse & Verwendung erstellen, die (und zu speichern) einen Verweis auf die Bühne passieren .... wie so:

Dokumentklasse (oder ein anderes Objekt zur Zeit auf der Anzeigeliste):

package { 
    import TestDependency; 
    import flash.display.MovieClip; 

    public class Main extends MovieClip 
    { 
     public var td:TestDependency; 

     function Main() { 
      td = new TestDependency(1000); 
      td.bindToStage(this.stage); 
     } 
    } 
} 

Ihre benutzerdefinierte Klasse (nicht in der Anzeigeliste:

package { 
    import flash.display.Stage; 
    import flash.utils.Timer; 
    public class TestDependency extends Timer 
    { 
     private var stageRef:Stage; 

     function TestDependency(delay) { 
      super(delay); 
     } 

     public function bindToStage($stageRef:Stage) 
     { 
      this.stageRef = $stageRef; 
      trace(this.stageRef.stageWidth); 
     } 
    } 
} 
Verwandte Themen