Actionscript 3 动作脚本3:暂停游戏
嘿,我正在暂停我的比赛。我让它几乎可以工作,但有几个故障,我似乎无法理解 基本上,我有一些代码(如下)暂停帧速率,然后恢复帧速率。这两段代码单独正确地工作,但当组合在一起时,如果我按“p”,它会立即循环两段代码,有效地只执行第二段(我放入跟踪,它显示当我按一次“p”时两段代码都在执行) 所以,我的第一个也是主要的问题是,我如何让它工作?我只想在按下“p”暂停游戏时执行一段代码,然后在这之后,再次按下“p”并执行另一段代码 我的第二个问题是…为什么当我追踪帧速率时,它会说它是0.01而不是0?我觉得这很有趣……不管怎样,这是代码。如果你需要更多的背景,请告诉我,但我认为你不会Actionscript 3 动作脚本3:暂停游戏,actionscript-3,frame-rate,Actionscript 3,Frame Rate,嘿,我正在暂停我的比赛。我让它几乎可以工作,但有几个故障,我似乎无法理解 基本上,我有一些代码(如下)暂停帧速率,然后恢复帧速率。这两段代码单独正确地工作,但当组合在一起时,如果我按“p”,它会立即循环两段代码,有效地只执行第二段(我放入跟踪,它显示当我按一次“p”时两段代码都在执行) 所以,我的第一个也是主要的问题是,我如何让它工作?我只想在按下“p”暂停游戏时执行一段代码,然后在这之后,再次按下“p”并执行另一段代码 我的第二个问题是…为什么当我追踪帧速率时,它会说它是0.01而不是0?我觉
if (stage.frameRate == 30)
{
if (keyboardEvent.keyCode == Keyboard.P)
{
dispatchEvent(new NavigationEvent(NavigationEvent.PAUSEGAME));
stage.frameRate = 0;
checkIfPaused = true;
trace("pause game");
trace(stage.frameRate);
}
}
if (stage.frameRate == 0.01)
{
if (keyboardEvent.keyCode == Keyboard.P)
{
stage.frameRate = 30;
dispatchEvent(new NavigationEvent(NavigationEvent.RESUMEGAME));
checkIfPaused = false;
trace("resume game");
}
}
没关系,我知道了。我刚刚为第二个片段添加了其他if,而不是if,现在它可以工作=),但是如果有人能以一种很好的方式回答我关于帧速率为0.01的问题,我会给你答案你能更具体地说明你想在游戏中暂停什么吗?它是一款流行的引擎(比如Flixel),是Greensock TweenLite/TweenMax,还是您自己的定制定时器?ActionScript中没有全局暂停命令(至少据我所知),您必须自己实现它。这可能意味着让所有对象都跟踪全局暂停变量,或暂停两个引擎,或将时间增量覆盖为零,或所有内容的组合。注:我从未见过有人尝试使用stage.frameRate属性,我认为这是一种不好的做法。好吧,不好的做法,我让它起作用了(如果你看到我对这个问题的答案)。另外,我并不想知道如何暂停,我只是想知道为什么它会执行if语句的两个部分,所以你所说的一切对于这个post=p来说都有点无关。但是…我用定时器来安排我的活动。因此,也许以某种方式暂停计时器是更好的做法,但就目前而言,这是一个关于为什么通过设置全局fps暂停可能不受欢迎的示例,因为它可能会干扰您可能不想要的其他事情。例如,你有一个包含需要设置动画的动画元素的暂停菜单,或者一个只有主游戏暂停时用户需要与之交互的包含动画元素(如光标)的项目菜单,等等。嗯,非常正确。幸运的是,我正在设计的游戏非常简单,所以现在就可以了,但我确定这会妨碍更复杂的游戏。好吧,bigp,看起来你绝对是对的。当我把swf上传到一个免费的主机上时,出于某种原因,我的暂停功能就不能正常工作,尽管当我在actionscript中导出它时,它工作得很好。但是我可以通过停止计时器来修复它,所以没什么大不了的=根据adobe文档,帧速率的有效值限制在0.01到1000之间。但除此之外,我想知道从技术上讲,每秒0帧是否会导致swf冻结。假设帧上有要执行的代码,0 fps表示没有帧正在运行,那么它会导致代码不运行吗=B这是我的猜测,为什么它不能精确地为0=p