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関数を実行すると、null 参照エラーがスローされます。

解決するには、Enter Frame リスナーを削除して、ムービークリップがヒットしたかどうかのチェックを停止します。

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

注:フレーム 3 に存在しないhasa_mc場合は、他のリスナーも削除する必要がある場合があります。hasa_mc

于 2013-02-11T10:23:07.357 に答える
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);
    }
}

}

}

于 2013-02-11T18:24:26.223 に答える