Frage

Hey peepz! Ich habe diese Fußzeile Bild, dass ich auf den Boden der Bühne ausgerichtet werden soll, aber ich bin immer Fehler.

Wie man sehen kann ich einen ADDED_TO_STAGE Zuhörer im Konstruktor Funktion haben.

package src.display{

import flash.text.*;
import flash.display.*;
import flash.geom.Matrix;
import flash.events.Event;

public class Frame extends Sprite {
    private var footer:Sprite = new Sprite();

    // ☼ ------ Constructor
    public function Frame():void {
        this.addEventListener(Event.ADDED_TO_STAGE, tracer);
    }

    public function tracer(event:Event) {
        trace("Frame added to stage --- √"+"\r");
        this.removeEventListener(Event.ADDED_TO_STAGE, tracer);
    }

    // ☼ ------ Init
    public function init():void {
        footer.graphics.beginFill(0x000);
        footer.graphics.drawRect(0,0,800,56);
        footer.graphics.endFill();
        footer.y = (stage.height - footer.height); // <-- This Line

        addChild(footer);
    }

}

}

Der Film wird richtig funktionieren, wenn ich kommentieren Sie Zeile 26 (aber natürlich ich will Y nicht 0 sein):

footer.y = (stage.height - footer.height);

Hier ist der Fehler im Ausgabefenster erhalte ich:

Typeerror: Error # 1009: Kann nicht auf eine Eigenschaft oder Methode einer null-Objektreferenz zuzugreifen.     bei src.display :: Frame / init () [/ Users / lgaban / Projekte / Spieler / src / Anzeige / Frame.as: 26]


UPDATE

Beantworten meine eigene quesiton, fix hier

War es hilfreich?

Lösung

ein benutzerdefiniertes Ereignis zu verwenden ist ein bisschen übertrieben, vor allem, wenn Sie den Hörer haben für dort zu Stufe bereits hinzugefügt. Ich würde es tun, wie folgt:

package src.display{

    import flash.text.*;
    import flash.display.*;
    import flash.geom.Matrix;
    import flash.events.Event;

    public class Frame extends Sprite {

        // don't instantiate your sprite here, it's weird! :)
        private var footer:Sprite;

        // this is the same as in your example
        public function Frame():void {
            this.addEventListener(Event.ADDED_TO_STAGE, handleAddedToStage);
        }

            // i renamed this to reflect what it does
        private function handleAddedToStage(event:Event) {
            trace("Frame added to stage --- √"+"\r");
            this.removeEventListener(Event.ADDED_TO_STAGE, handleAddedToStage);
            init();
        }

        // this is also essentially the same, except for private since it shouldn't be called from the outside
        private function init():void {
            footer = new Sprite();
            footer.graphics.beginFill(0x000);
            footer.graphics.drawRect(0,0,800,56);
            footer.graphics.endFill();
            footer.y = (stage.height - footer.height);

            addChild(footer);
        }

    }
}

Andere Tipps

Nicht, dass es ist die vollständige Antwort, aber dieser Fehler ist Ihnen zu sagen, dass Stufe null ist.

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