我需要一个工作暂停并恢复我的项目代码

时间:2017-01-26 07:12:28

标签: actionscript-3 flash-cs6

到目前为止,我尝试了许多代码暂停并玩游戏,但是没有多少代码工作。

我在舞台上有一个移动的物体,我也有定时器动态文字。

我需要暂停工作并在我的项目中播放代码。

我的移动物体示例

/*Fish 3 move*/
var balik3x:Number=7;
var balik3y:Number=Math.random()*15
 
stage.addEventListener(Event.ENTER_FRAME,h3);
function h3(oly:Event) {
balik3.x+=balik3x;
balik3.y+=balik3y;
if ((balik3.x>=stage.stageWidth-balik3.width/2)|| (balik3.x <= balik3.width/2 )) {
    balik3x*=-12;
}
if ((balik3.y>=stage.stageHeight-balik3.height/2)|| (balik3.y <= balik3.height/2 )) {
    balik3y*=-1;
}
}
balik3.mouseEnabled = false;

我的计时器代码

更新:@ www0z0k你的意思是这样的。定时器暂停和鼠标悬停不再存在。但是当我点击播放按钮时,计时器没有恢复。

time.text="0:10";
var dispSecs=09;
var dispMins=0;
 
var timerInterval=setInterval(countDown,1000);
var control:Timer = new Timer(1000,0)
control.addEventListener(TimerEvent.TIMER, keko)
control.start();
 
function keko (evt:Event):void{

if(dispMins <1 && dispSecs <1 )
{
timeisup.visible = true;
timeisup.play();
}
}
 
function countDown()
{
dispSecs--;
if (dispMins == 0 && dispSecs == 0)
{
clearInterval(timerInterval);
}
else if (dispSecs == 0)
{
dispSecs = 59;
if (dispMins > 0)
{
dispMins--;
}
}
time.text = prependZero(dispMins) + ":" + prependZero(dispSecs);
}  
 
function prependZero(num)
{
if(num<10)
{
num=""+num;
}
return(num);
} 

我试过的最后一个代码。但它并不完全正常。修订版

play1.addEventListener(MouseEvent.CLICK, resumeGame);
function resumeGame(event:MouseEvent):void{
addEventListener(TimerEvent.TIMER, keko);
stage.frameRate = 30;
}
pause1.addEventListener(MouseEvent.CLICK, pauseGame);
function pauseGame(event:MouseEvent):void{
stage.removeEventListener(TimerEvent.TIMER, keko);
clearInterval(timerInterval);
stage.frameRate = 0.01;

}

2 个答案:

答案 0 :(得分:2)

不是特定于您的代码,但您会明白

private function togglePause():void{
    // check if the event listener exists
    if (!stage.hasEventListener(Event.ENTER_FRAME)){
    // add it if it doesn't 
        stage.addEventListener(Event.ENTER_FRAME, tick);
    } else {
    // remove it if it does
        stage.removeEventListener(Event.ENTER_FRAME, tick);
    }
}

答案 1 :(得分:1)

我认为可能存在一个小错误,您已将事件侦听器添加到stage并尝试从play1.addEventListener(MouseEvent.CLICK, resumeGame); function resumeGame(event:MouseEvent):void{ addEventListener(TimerEvent.TIMER, keko); stage.frameRate = 30; } pause1.addEventListener(MouseEvent.CLICK, pauseGame); function pauseGame(event:MouseEvent):void{ stage.removeEventListener(TimerEvent.TIMER, keko); clearInterval(timerInterval); stage.frameRate = 0.01; } 中删除事件侦听器。尝试此代码,如果这不起作用,请告诉我,我将为您提供另一种解决方案

{{1}}