2013-02-11 83 views
0

这是我的代码 - 它的工作,并移动到帧3,但一切都卡在那里,我 得到这个错误#2007错误#2007:参数hitTestObject必须为非空

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

    } 

回答

1

错误代码和说明指的是线路:

if (hasa_mc.hitTestObject(hauta1_mc)) {

我的猜测是影片剪辑hauta1_mc不会对影片的框架3存在,所以一旦你转到第3帧和你dropCheckHit˚F unction执行空引用错误被抛出。

解决您可以删除输入帧监听器和停止检查,如果影片剪辑一直打到:

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

注意:您可能需要删除您对hasa_mc以及其他听众如果hasa_mc不存在于第3帧中。

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

} 

}

相关问题