错误#2007:参数hitTestObject必须为非null

时间:2013-02-11 10:17:17

标签: actionscript-3 flash

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

    }

2 个答案:

答案 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)

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

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

}

}