Как приостановить загрузку кадра в actionscript

У меня есть игра в которой полет будет стрелять пулями и при попадании пули во вражеский корабль наступает эффект взрыва и загружается еще один кадр. Теперь проблема, с которой я столкнулся, - это эффект взрыва, и следующий кадр загружается одновременно. Итак, я добавил этот скрипт:

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

Но все равно результат тот же. Я также пытался увеличить время, но я все еще не могу остановить этот другой кадр от паузы. Пожалуйста, помогите мне. Спасибо


person Pramod    schedule 18.10.2012    source источник
comment
Как раз в сторону; вам действительно следует подумать о переходе на ActionScript 3.0, если это вообще возможно, и структурировать код с использованием классов, а не временной шкалы - это сделает вашу жизнь намного проще;)   -  person net.uk.sweet    schedule 18.10.2012
comment
Благодарю вас! обязательно буду ждать   -  person Pramod    schedule 18.10.2012


Ответы (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);
  }
}
person net.uk.sweet    schedule 18.10.2012