Frage

Wie greife ich auf Stufe Klasse Eigenschaften in Costum Klasse?

Klasse:

package {
    import Main;
    import flash.events.*;
    import flash.display.Sprite;
    import flash.display.Stage;

    public class Run extends Sprite {
        var obj:a1_spr;


        public function Run() {
            runAssets();

        }



        private function runAssets():void {
            obj = new a1_spr()
            addChild(obj);
            obj.x = stage.stageWidth/2;

        }
    }
}

Ausgang:

TypeError: Error #1009: Cannot access a property or method of a null object reference.
War es hilfreich?

Lösung

this.addEventListener(Event.ADDED_TO_STAGE, handleAdedToStage)

private function handleAddedToStage(event:Event):void
{
    this.runAssets()
}

private function runAssets():void
{
    obj = new a1_spr();
    addChild(obj);
    obj.x = this.stage.stageWidth/2;
}

Sie werden keinen Zugriff auf die Bühne haben, im Konstruktor (wenn Sie die Bühne in die Klasse injizieren). Sprite hat eine Stufe Eigenschaft.

Andere Tipps

Um auf zu erweitern, was Joel sagte, und legt sie in einem Kontext:

Jedes Anzeigeobjekt hat eine .stage Eigenschaft, aber das Eigentum ist null, bis Sie Objekt auf der Anzeigeliste Anzeige hinzuzufügen. So während der Bauphase, werden Sie nie in der Lage sein, darauf zuzugreifen, (weil es wird hinzugefügt danach)

Das Ereignis ADDED_TO_STAGE wird ausgelöst, wenn Sie Ihr Objekt auf der Bühne hinzufügen, ltting Sie wissen, dass die .stage Immobilie ist bereits ausgefüllt. Danach passiert man die Bühne von überall zugreifen können, in Ihnen widersprechen.

Hoffnung, dass stellt klar, Dinge für Sie.

, wenn Flash das FLA-Assets mit Ihren .as-Dateien kompiliert, gibt es keine Bühne. so dass der Code als Vorbereitung für Ihr document initiiert wird, müssen Sie hören, ob es eine Bühne, so kann es gemacht werden.

, das ist, warum Sie zu ADDED_TO_STAGE hören, zu überprüfen, es ist eigentlich in der Anzeigeliste.

Dieses Problem tritt für alle Anzeigeobjekte, da sie auf die Anzeigeliste hinzugefügt werden muss, wenn es gibt eine aktuelle Stufe.

gewöhnungs dass Zuhörer hinzuzufügen, und für eine Bühne zu überprüfen. besonders wenn sie in einem Team arbeiten und Ihre in einem größeren Projekt eigene Komponenten zu tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top