暂停游戏(ActionScript 3)

时间:2011-08-01 08:31:17

标签: flash actionscript-3

我写过这个游戏。它在运行程序时立即启动。一切都在一个文档类中工作。现在,我想做一些基本的介绍,例如,在游戏开始前的动画倒计时。我怎么能暂停游戏?主时间轴上只有一个框架包含背景。

2 个答案:

答案 0 :(得分:4)

如果您的动画基于计时器。

启动计时器时:

timer.start();
last_time = getTimer();

暂停计时器时:

timer.stop();
pause_timer = getTimer() - last_time;

恢复计时器时:

last_time = getTimer();
timer.start();

希望,它会帮助你。

答案 1 :(得分:2)

要添加到Antony上面的答案,如果您使用事件侦听器来处理游戏循环操作,您可以简单地删除它们以暂停游戏,然后再次添加它们以重新启动它。例如:

package com.mygame.logic{
import flash.display.MovieClip;
import flash.display.Bitmap; 
import fl.controls.Button; //to get this code to work you have to drag a UI component to your 
//movie's library or Flash won't recognize it.
public class mygame extends MovieClip{   //this is to be the main document class for the .fla
private var bmp:Bitmap = new Bitmap(...); //fill in constructor with relevant data
private var myButton:Button = new Button();
private var paused:Boolean = false;
public mygame(){
  bmp.x = 100;
  bmp.y = 100;
  myButton.x = 200;
  myButton.y = 200;
  this.addChild(bmp);
  this.addChild(myButton);
  this.addEventListener(Event.ENTER_FRAME, main);
  myButton.addEventListener(MouseEvent.ON_CLICK, pause);
}
public function main(e:Event):void{
  bmp.x += 1.0;
}
public function pause(e:MouseEvent):void{
  if (!paused){
    this.removeEventListener(Event.ENTER_FRAME, main);
    this.paused = true;
  }
  else{
    this.addEventListener(Event.ENTER_FRAME, main);
    this.paused = false;
  }
}

这应该用于基本暂停功能。您可以扩展上面的内容,为播放器制作一个漂亮的HUD,用于暂停/重新启动游戏,使用补间可以很好地将HUD过渡到屏幕上...

希望它有所帮助, CCJ