私は 2 つのシーンを持つアプリケーションを持っています。最初のシーンには手動でシーンに配置される 4 つのムービークリップが含まれています。すべてのムービークリップにはインスタンス名が(mc1,mc2..mc4),
あり、このオブジェクトを使用して配列を作成し、var arr:Array = [mc1..mc4];
それぞれにマウス イベント リスナーを追加します (var i in arr){ i.addEvent...mouse.click)};
このシーンには、このコードを持つ「次のシーン」ボタンもあります: nextScene();
2 番目のシーンには、このコードを持つ「戻る」ボタンが 1 つあります:prevScene();
私のアプリは 1200 x 720 px サイズで、800 x 600これを手動で変更するとき。アプリケーションを実行しているときは、すべて問題なく、次のシーンに移動します。戻るボタンを押すと、最初のシーンでエラーが発生します
for each(var i in arr){
i.addEvent...mouse.click)
};
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at Main/frame2()
at flash.display::MovieClip/prevScene()
at Main/onBack()
mc1 をトレースすると、最初に Scene1 を実行すると、出力は //movieclip になります。出力は // null であり、arr をトレースすると、出力は // ,movieclip,movieclip,movieclip (最初のコンマのみ) になります。問題になることができますか?ありがとうございました
シーン 1 コード:
stop();
trace(mc1); // first run -> object [MovieClip]
// when back pressd -> null
var selectedIm:MovieClip = mc1;
var selectedD = d1;
var difficulty:uint = 3;
var imgs:Array = [mc1,mc2,mc3,mc4];
var diff:Array = [d1,d2,d3,d4];
goBtn.addEventListener(MouseEvent.CLICK, onGo);
for each(var i in imgs){
i.addEventListener(MouseEvent.CLICK, onImage); //here is the error, NULL OBJECT
}
function onGo(e:MouseEvent):void{ //next button
new Clk().play();
nextScene();
}
function onImage(e:MouseEvent):void{
new Clk().play();
if(selectedIm) selectedIm.filters = [];
selectedIm = e.target as MovieClip;
addOutline(selectedIm,0xFFFFFF,6);
}
...
シーン 2 コード:
...
function onBack(e:MouseEvent):void{
new Clk().play();
removeChild(pz);
timer.reset();
timer.stop();
timer.removeEventListener(TimerEvent.TIMER, numara);
prevScene();
....
}