パーティクルエフェクトライブラリを使用するための短いコードを実行しようとすると、次のエラーが発生します。AS3 - エラー#1009:nullオブジェクト参照のプロパティまたはメソッドにアクセスできません
エラー#1009:nullのオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません
私はもともとメインから実行している私の全体のコードを持っていたし、私は "にそれを置くことを決めたとき、それは、うまく働きましたParticleManager "クラスこのエラーが発生し始めました。
エラー自体は、ここで起こる -
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)
}
}
それが最初の行で発生します。そして、私はそれを研究しようとしましたが、これはステージが何にも設定されていないために起こりますが、どうすれば回避できますか?なぜ手前でメインから走っていたのですか?
ありがとうございます!
編集 - 追加情報が必要です。
メインクラス
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;
}
}
}
前に同一であったParticleManagerクラスは、単に「メイン」と名付けられ、そこから実行します。
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();
}
}
}
}
その追加されたことで、私はもはや、エラーを取得していないのFlashPlayerがロードされ、その後、ちょうどそれが正常に動作します以前のようにwhitescreen、と座っています。 – user1293902
エラーがありますか?実装を完全に理解するためには、コード抜粋以上のものが必要です。 –
エラーはありません。オリジナルの投稿を更新して、MainとParticalManagerの完全なクラスを表示しました。以前は、ParticalManagerクラスはMainクラスに過ぎませんでした。 – user1293902