这是我的代码 - 它正在工作并转移到第3帧但是一切都被卡在那里而我 得到这个错误#2007
function createMC(event:Event):void
{
var hasa_mc:MovieClip= new hasa();
stage.addChild(hasa_mc);
var halfMc:int=hasa_mc.width/2;
hasa_mc.x=randomNum(70+halfMc,480-halfMc);
hasa_mc.addEventListener(Event.ENTER_FRAME, abc);
hasa_mc.addEventListener(Event.ENTER_FRAME, dropCheckHit);
function dropCheckHit(event:Event):void
{
if (hasa_mc.hitTestObject(hauta1_mc)) {
hasa_mc.removeEventListener(Event.ENTER_FRAME, dropCheckHit);
event.target.parent.removeChild(event.target);
countertime++;
score_txt.text=String(countertime*10)
if (countertime==10)
{
gotoAndStop(3);
}
答案 0 :(得分:1)
错误代码和说明是指行:
if (hasa_mc.hitTestObject(hauta1_mc)) {
我的猜测是电影剪辑hauta1_mc
在你的电影的第3帧中不存在,所以一旦你进入第3帧并且你的dropCheckHit
函数执行,则引发空引用错误。
要解决此问题,您可以删除输入框架侦听器并停止检查动画片段是否已被命中:
if (countertime==10)
{
hasa_mc.removeEventListener(Event.ENTER_FRAME, dropCheckHit);
gotoAndStop(3);
}
注意:如果第3帧中不存在hasa_mc
,您可能需要删除hasa_mc
上的其他听众。
答案 1 :(得分:0)
function dropCheckHit(event:Event):void {
if (hasa_mc.hitTestObject(hauta1_mc)) {
hasa_mc.removeEventListener(Event.ENTER_FRAME, dropCheckHit);
event.target.parent.removeChild(event.target);
countertime++;
score_txt.text=String(countertime*10)
if (countertime==10)
{
gotoAndStop(3);
hasa_mc.removeEventListener(Event.ENTER_FRAME, dropCheckHit);
}
hauta1_mc.nextFrame();}
else if (hasa_mc.y > 380)
{
xdirection = 0;
ydirection = 0;
hasa_mc.x = 190;
hasa_mc.y = 200;
hauta1_mc.x=220;
lifeCounter--; //
life_txt.text=String(lifeCounter);
trace(lifeCounter);
if (lifeCounter==0)
{
gotoAndStop(5);
}
}
}
}