停止并播放嵌套的MovieClip

时间:2015-09-13 21:39:48

标签: actionscript-3

我正试图制造一个坠落的炸弹和爆炸效果。我创建了一个带有嵌套补间动画的bomb1然后我创建了炸弹2,爆炸效果嵌套在炸弹内的另一个深度。我的希望是,当炸弹击中目标时,向下的动作将停止,同时会发生爆炸。问题是我不能同时发生这两个动作,它要么完全停止动作,要么在炸弹继续向下时爆炸。我无法让两个动作同时发生。 bomb1.stop();应该停止向下移动,bomb1.bomb2.gotoAndPlay(31);应该会产生爆炸效果。任何的想法?

import flash.events.Event;
var bombPlaying: Boolean = true;

this.addEventListener(Event.ENTER_FRAME, handleCollision);

function handleCollision(evt: Event): void {
  if (bomb1.hitTestObject(gLine1)) {
  bomb1.stop();
  bomb1.bomb2.gotoAndPlay(31);

  }
}

2 个答案:

答案 0 :(得分:0)

我无法在不看项目的情况下对您的具体细节发表评论,但针对您的问题的可能解决方法是尝试此操作:

import flash.events.Event;
var bombPlaying: Boolean = true;

this.addEventListener(Event.ENTER_FRAME, handleCollision);

function handleCollision(evt: Event): void {
  if (bomb1.hitTestObject(gLine1)) {
  bomb1.stop();
  setTimeout(bomb1.bomb2.gotoAndPlay, 0, 31);
  }
}

这会触发你的bomb1.bomb2.gotoAndPlay函数在下一帧被调用,这可能会缓解你的问题。

答案 1 :(得分:0)

我找到了解决方案。必须在bomb1.stop();bomb1.bomb2.gotoAndPlay(31);

之前删除eventListener
  import flash.events.Event;

    bomb1.gotoAndStop(1);

myButton.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler);

function fl_MouseClickHandler(event: MouseEvent): void {
    bomb1.gotoAndPlay(1);
    this.addEventListener(Event.ENTER_FRAME, handleCollision);
}
function handleCollision(evt: Event): void {
    if (bomb1.hitTestObject(gLine1)) {
        this.removeEventListener(Event.ENTER_FRAME, handleCollision);
        bomb1.stop();
        bomb1.bomb2.gotoAndPlay(31);
    }
}