在游戏中,暂停是一项基本功能。如何在AS3.0中实现对游戏的暂停,是本文探讨的内容。
Flash游戏涉及的元素相当多,有时间轴驱动的动画,有代码驱动的动画,还有各种侦听器,如果要针对每一个元素逐个进行停止操作太过于繁杂,我近日在网络上得知了一种“快刀斩乱麻”的方法,即最简单的stage.frameRate=0。将帧速降为0后,所有的动作都会相应停止。我在此基础上进行了一系列测试,其中有一些细节与大家分享。
1、timerbox添加了时间侦听,将在第三秒被删除。
2、剪辑box是一个普通的影片剪辑,在影片剪辑中box元件从左到右进行普通的补间运动。
3、下面的box添加了ENTER_FRAME侦听,向右移动。
4、上方是时间触发的动态文本,每隔一秒数字会加一。
在第一秒按下B1暂停按钮,可以成功暂停。三秒后timerbox没有消失,mytext的数值仍然为1。其他元件也没有变化
如果在三秒之后按下B2恢复按钮,timerbox会瞬间消失,而不是在预想的2秒之后消失(因为程序设置在第三秒使其消失,如果在第一秒暂停,无论何时恢复,都应该在恢复之后的二秒后消失)而且mytext也是瞬间跳转到下一个数字。因此当frameRate=0后,计时器仍然会工作,但是当计时器到达侦听时间后,不会调用相关的函数,而是会在恢复的一瞬间调用。
而且framerate实际上有最小值0.01.即使强制设置frameRate=0,影片仍然在以0.01的帧速率进行,因此影片会在“暂停”后的某一时间突然变化,如上图。
综上,使用frameRate=0来暂停影片是不完善的,不建议在元素比较复杂的flash影片中使用。我会继续关注flash影片暂停的方法,也希望各位网友不吝赐教。
原帖地址:http://itgroup.blueshop.com.tw/ann71727/ann71727?n=convew&i=7351