Erste Fehler beim Versuch Stage.height zu verwenden, um eine Grafik zu platzieren
-
20-09-2019 - |
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
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.