Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 动作脚本3:暂停游戏_Actionscript 3_Frame Rate - Fatal编程技术网

Actionscript 3 动作脚本3:暂停游戏

Actionscript 3 动作脚本3:暂停游戏,actionscript-3,frame-rate,Actionscript 3,Frame Rate,嘿,我正在暂停我的比赛。我让它几乎可以工作,但有几个故障,我似乎无法理解 基本上,我有一些代码(如下)暂停帧速率,然后恢复帧速率。这两段代码单独正确地工作,但当组合在一起时,如果我按“p”,它会立即循环两段代码,有效地只执行第二段(我放入跟踪,它显示当我按一次“p”时两段代码都在执行) 所以,我的第一个也是主要的问题是,我如何让它工作?我只想在按下“p”暂停游戏时执行一段代码,然后在这之后,再次按下“p”并执行另一段代码 我的第二个问题是…为什么当我追踪帧速率时,它会说它是0.01而不是0?我觉

嘿,我正在暂停我的比赛。我让它几乎可以工作,但有几个故障,我似乎无法理解

基本上,我有一些代码(如下)暂停帧速率,然后恢复帧速率。这两段代码单独正确地工作,但当组合在一起时,如果我按“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