2012-04-15 12 views
0

Ich verwende externe AS-Dateien für ein neues Projekt von mir, die Erstellung eines Ortes zum Zeichnen, so dass ich die folgenden tutorial verwendet, um eine grundlegende Idee von was benötigt wird.AS3 Importieren von Klasse in einen anderen Frame

Ich habe die Hoffnung Anwendung arbeiten und reibungslos läuft, bis ich entschied ich mich in einem Vorbelastungs & Menü hinzufügen wollte - die Zeichnung Teil der App auf dem dritten Rahmen setzen - was mir diesen Fehler bekam:

TypeError: Error #1009: Cannot access a property or method of a null object reference.
- at Main/convertToBMD()
- at Main()

Also dachte ich, anstatt die Main.as der Klasse unter Eigenschaften hinzuzufügen, würde ich stattdessen die Datei auf dem Rahmen importieren. Verwendung:

var main:Main = new Main(); 
addChild(main); 

Dies funktioniert abgesehen davon verliert alle Verbindungen zu den Instanznamen.

Line 64 1120: Access of undefined property pencil. 
Line 65 1120: Access of undefined property eraser. 
Line 65 1120: Access of undefined property txt. 
Line 82 1120: Access of undefined property board. 
Line 83 1120: Access of undefined property board. 

Etc .....

Also, was ich, wissen möchte, gibt es einen besseren Weg, dies zu tun und es immer an einem Rahmen zu arbeiten?

Durch Ändern von etwas in der externen Skript oder eine andere Art des Importierens in Frame?

Danke

Eli

Antwort

1

Das Problem ist, dass benannte Instanzen Eigenschaften der MainTimeline Instanz sind, die in der Regel das erste Kind der Bühne ist. Die Eigenschaften sind nicht Eigenschaften Ihrer Main Klasse (mehr).

Also, wenn Sie diese Eigenschaften von mit Main zugreifen möchten, können Sie so etwas wie tun:

var timeline:DisplayObject = stage.getChildAt(0); 
var pencil:DisplayObject = timeline["pencil"]; 

// do stuff with 'pencil' 
pencil.x = 500; 
... 

Hinweis: Dies setzt voraus, Main seine stage Eigenschaft festgelegt haben, die einmal der Fall sein sollte Sie haben es über addChild(main); hinzugefügt. Das bedeutet jedoch, dass Sie im Konstruktor Main nicht auf die stage-Eigenschaft zugreifen können, um das oben genannte zu tun. Wenn dies ein Problem ist, in Erwägung zu ziehen, Main warten auf die ADDED_TO_STAGE Ereignis vor der Verwendung von "Bleistift", etc.

Verwandte Themen