Ich erhalte den folgenden Fehler, wenn ich versuche, ein kurzes Stück Code auszuführen, den ich für die Verwendung einer Partikeleffektbibliothek erstellt habe.AS3 - Fehler # 1009: Zugriff auf eine Eigenschaft oder Methode eines Nullobjektverweises nicht möglich
Error # 1009: nicht eine Eigenschaft oder Methode einer null-Objektreferenz
ursprünglich zugreifen Kann ich meinen gesamten Code aus dem Haupt laufen hatte und es funktionierte gut, wenn ich es in eine setzen beschlossen " ParticleManager "Klasse I begann diesen Fehler zu bekommen.
Der Fehler selbst geschieht hier - es
stage.addEventListener(MouseEvent.CLICK, _onStageMouseDown);
function _onStageMouseDown(e:MouseEvent):void
{
//Draws an explosion on to the screen at the position of the mouse click.
var emitter:Emitter3D = new ParticleExplosion(new Vector3D(mouseX- width/2, mouseY- height/2, 0));
renderer.addEmitter(emitter);
emitter.start();
trace(e);
trace(renderer.mouseX)
trace(renderer.mouseY)
}
}
Es ist auf der ersten Zeile auftritt. Und ich habe versucht, es zu recherchieren und fand heraus, dass dies geschieht, weil die Bühne nicht auf irgendetwas eingestellt ist, aber wie komme ich da rüber? Warum hat es gut geklappt, vorher von Main aus zu laufen?
Danke!
Bearbeiten - Zusätzliche Informationen angefordert.
Die Hauptklasse
package
{
import flash.display.Sprite;
[SWF(width='800', height='600', frameRate='60', backgroundColor='#000000')]
/**
* ...
* @author
*/
public class Main extends Sprite
{
private var pManager:ParticleManager;
public function Main()
{
pManager = new ParticleManager;
}
}
}
Die ParticleManager-Klasse, die vor nur dem Namen "Main" identisch war und von diesem ausgeführt werden würde.
package
{
//Flint imports
import flash.events.Event;
import flash.events.MouseEvent;
import org.flintparticles.common.emitters.Emitter;
import org.flintparticles.common.actions.ScaleImage;
import org.flintparticles.common.events.EmitterEvent;
import org.flintparticles.common.events.ParticleEvent;
import org.flintparticles.threeD.emitters.Emitter3D;
import org.flintparticles.threeD.particles.Particle3D;
import org.flintparticles.threeD.renderers.BitmapRenderer;
import org.flintparticles.threeD.renderers.controllers.FirstPersonCamera;
import org.flintparticles.threeD.zones.LineZone;
//Flash imports
import flash.display.Sprite;
import flash.filters.BlurFilter;
import flash.filters.ColorMatrixFilter;
import flash.geom.Rectangle;
import flash.geom.Vector3D;
/**
* ...
* @author
*/
public class ParticleManager extends Sprite
{
private var orbitter:FirstPersonCamera;
private var renderer:BitmapRenderer;
public function ParticleManager()
{
//Sets up the "BitMapRenderer" a rectangle where the particle effects will be drawn on to
renderer = new BitmapRenderer(new Rectangle(0, 0, 800, 600), false);
renderer.x = 0;
renderer.y = 0;
renderer.addFilter(new BlurFilter(2, 2, 1));
renderer.addFilter(new ColorMatrixFilter([ 1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0.95,0 ]));
addChild(renderer);
renderer.camera.position = new Vector3D(0, 0, -400);
renderer.camera.target = new Vector3D(0, 0, 0);
renderer.camera.projectionDistance = 400;
//Mouse click
function addedToStageHandler(event:Event):void
{
stage.addEventListener(MouseEvent.CLICK, _onStageMouseDown);
}
function _onStageMouseDown(e:MouseEvent):void
{
//Draws an explosion on to the screen at the position of the mouse click.
var emitter:Emitter3D = new ParticleExplosion(new Vector3D(mouseX- width/2, mouseY- height/2, 0));
renderer.addEmitter(emitter);
emitter.start();
trace(e);
trace(renderer.mouseX)
trace(renderer.mouseY)
}
}
public function removeEmitter(ev:EmitterEvent):void
{
Emitter3D(ev.target).removeEventListener(EmitterEvent.EMITTER_EMPTY, removeEmitter);
renderer.removeEmitter(Emitter3D(ev.target));
}
public function destroy():void
{
for each(var e:Emitter in renderer.emitters)
{
e.stop();
}
}
}
}
Mit diesem Zusatz ich nicht mehr die Fehlermeldung erhalten, Flashplayer lädt und dann sitzt nur mit einem Weißbild, wo, wie, bevor es in Ordnung funktionieren würde. – user1293902
Gibt es einen Fehler? Mehr als Ihr Code-Auszug ist erforderlich, um Ihre Implementierung vollständig zu verstehen. –
Es gibt keinen Fehler. Ich habe meinen ursprünglichen Beitrag aktualisiert, um die vollständige Main- und ParticalManager-Klasse anzuzeigen. Zuvor war die ParticalManager-Klasse nur die Main-Klasse. – user1293902