2

フライトで弾丸が発射され、弾丸が敵の船に当たると爆風効果が発生し、別のフレームが読み込まれるゲームがあります。今私が直面している問題は爆風効果であり、次のフレームが一度にロードされています。そこで、このスクリプトを追加しました。

if (this.hitTest(_root["enemy1"])) {
    this.removeMovieClip();
    _root.enemy1._x=2000;
    _root.option1._x=2000;
    addExplosion(800, 200, explosionParticleAmount, explosionDistance, explosionSize, explosionAlpha);
    this._x=-900000;
    var sound:Sound = new Sound(this);
    sound.attachSound("explode");
    sound.start();
    flag = true;
    wait();
    checkAnswer(_root.option1.text);
}

function wait() {
  stop();
  var myInterval = setInterval(function () {
      play();
      clearInterval(myInterval);
  }, 5*1000); // stop for 5 seconds
}

function checkAnswer(answer){
  if(questions[level][1] == answer){  
     status_flag=true;
     score=score+10;
     bullet_fire=false;
     gotoAndStop(3);
  }else{
      bullet_fire=false;
     gotoAndStop("Scene 2",1);
  }
}

しかし、それでも結果は同じです。時間も増やしてみましたが、それでも別のフレームの一時停止を止めることができません。私を助けてください。ありがとうございました

4

1 に答える 1

1

次の方法でうまくいくと思いますが、より堅牢な方法は、爆発アニメーションが完了したことを通知するイベントを受信するまで一時停止することです。現在の方法の問題は、爆発シーケンスの長さを変更する場合、一時停止の長さも更新することを忘れないでください。

if (this.hitTest(_root["enemy1"])) {
    this.removeMovieClip();
    _root.enemy1._x=2000;
    _root.option1._x=2000;
    addExplosion(800, 200, explosionParticleAmount, explosionDistance, explosionSize, explosionAlpha);
    this._x=-900000;
    var sound:Sound = new Sound(this);
    sound.attachSound("explode");
    sound.start();
    flag = true;
    wait();
}

function wait() {
  stop();
  var myInterval = setInterval(function () {
      //play();
      checkAnswer(_root.option1.text); // check answer after explosion has finished
      clearInterval(myInterval);
  }, 5*1000); // stop for 5 seconds
}

function checkAnswer(answer){
  if(questions[level][1] == answer){  
     status_flag=true;
     score=score+10;
     bullet_fire=false;
     gotoAndStop(3);
  }else{
      bullet_fire=false;
     gotoAndStop("Scene 2",1);
  }
}
于 2012-10-18T16:26:27.837 に答える