我有一个有 2 个场景的应用程序,第一个场景包含 4 个动画剪辑,它们手动放置到场景中,每个动画剪辑都有一个实例名称(mc1,mc2..mc4),
,我用这个对象创建了一个数组,var arr:Array = [mc1..mc4];
我为每个对象添加了一个鼠标事件侦听器(var i in arr){ i.addEvent...mouse.click)};
在这个场景中,我还有一个按钮“下一个场景”,其中包含以下代码:nextScene();
在第二个场景中,我有一个按钮“返回”,其中包含以下代码:prevScene();
我的应用程序大小为 1200 x 720 像素,我想要 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 (首先只有逗号)什么可能是问题吗?谢谢你
场景一代码:
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);
}
...
场景二代码:
...
function onBack(e:MouseEvent):void{
new Clk().play();
removeChild(pz);
timer.reset();
timer.stop();
timer.removeEventListener(TimerEvent.TIMER, numara);
prevScene();
....
}