在游戏中,暂停是一项基本功能。如何在AS3.0中实现对游戏的暂停,是本文探讨的内容。

   Flash游戏涉及的元素相当多,有时间轴驱动的动画,有代码驱动的动画,还有各种侦听器,如果要针对每一个元素逐个进行停止操作太过于繁杂,我近日在网络上得知了一种“快刀斩乱麻”的方法,即最简单的stage.frameRate=0。将帧速降为0后,所有的动作都会相应停止。我在此基础上进行了一系列测试,其中有一些细节与大家分享。

2014年04月15日
   这是测试界面,下面是对应的代码,相当简单。

1、timerbox添加了时间侦听,将在第三秒被删除。

2、剪辑box是一个普通的影片剪辑,在影片剪辑中box元件从左到右进行普通的补间运动。

3、下面的box添加了ENTER_FRAME侦听,向右移动。

4、上方是时间触发的动态文本,每隔一秒数字会加一。

5、最下方是按钮,控制着影片的帧速率。
2014年04月15日
以下是运行截图

2014年04月15日

在第一秒按下B1暂停按钮,可以成功暂停。三秒后timerbox没有消失,mytext的数值仍然为1。其他元件也没有变化

2014年04月15日

   如果在三秒之后按下B2恢复按钮,timerbox会瞬间消失,而不是在预想的2秒之后消失(因为程序设置在第三秒使其消失,如果在第一秒暂停,无论何时恢复,都应该在恢复之后的二秒后消失)而且mytext也是瞬间跳转到下一个数字。因此当frameRate=0后,计时器仍然会工作,但是当计时器到达侦听时间后,不会调用相关的函数,而是会在恢复的一瞬间调用。
2014年04月15日

而且framerate实际上有最小值0.01.即使强制设置frameRate=0,影片仍然在以0.01的帧速率进行,因此影片会在“暂停”后的某一时间突然变化,如上图。

   综上,使用frameRate=0来暂停影片是不完善的,不建议在元素比较复杂的flash影片中使用。我会继续关注flash影片暂停的方法,也希望各位网友不吝赐教。
原帖地址:http://itgroup.blueshop.com.tw/ann71727/ann71727?n=convew&i=7351

posted on 2021-09-09 15:08  我是cdt  阅读(89)  评论(0编辑  收藏  举报