0

这是我的代码-它正在工作并移至第 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);

    }
4

2 回答 2

1

错误代码和描述参考以下行:

if (hasa_mc.hitTestObject(hauta1_mc)) {

我的猜测是hauta1_mc电影的第 3 帧上不存在影片剪辑,因此一旦您转到第 3 帧并且您的dropCheckHit函数执行时,就会抛出空引用错误。

要解决此问题,您可以删除输入帧侦听器并停止检查是否已命中影片剪辑:

if (countertime==10)
{
  hasa_mc.removeEventListener(Event.ENTER_FRAME, dropCheckHit);
  gotoAndStop(3);
}

hasa_mc注意:如果第hasa_mc3 帧中不存在其他侦听器,您可能还需要删除其他侦听器。

于 2013-02-11T10:23:07.357 回答
0

谢谢你。我还需要从哪里删除?仍然不起作用。当它进入第 3 帧时,有新的 MC 击中新对象

函数dropCheckHit(事件:事件):无效{

    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);
    }
}

}

}

于 2013-02-11T18:24:26.223 回答