Flash作品中预设的帧速率只是理想化的,而实际情况是,Flash处理程序或是渲染图像时需要消耗一定的时间,所以动画运行时每一帧的帧速率基本上是不一样的。在一帧中放置过多的符号,该帧的帧速率就会远远低于预设的帧速率,导致画面播放不流畅,或是掉帧的情况。如果使用帧速率测试器来检测您的动画,则可发现上述问题。因为帧速率测试器工作时会显示出影片当前的平均帧速率。
总之,无论是设计游戏还是制作大型动画,速度慢、运行不稳定的作品是不会有吸引力的,谁也无法去忍受一个只有4帧/秒的动画。
效果预览:
图1
设计要点:
首先测试器本身要尽量的简单,否则会影响测试效果。测试器中主要就是一个用来输出测试结果的动态文本和一个重置按钮。使用重置按钮是为得到一个经过准确计算的帧速率,其工作方式就是刷新测试器。测试器测试本身时,显示的帧速率应该和预设值是一样的。
设计步骤:
1.打开Flash MX,设置场景大小为350px×100px,背景色为“#0E6A99”(其实,场景的设置是无关紧要的)。按快捷键“Ctrl+F8”新建一个名为“fps”的影片剪辑符号。
2.在符号“fps”的场景里点击选中工具面板中的文本工具
然后创建一个静态文本,输入“帧速率:”几个字,如图1所示。接着再创建一个动态文本框,点选中该动态文本框,在其属性面板里进行如图2所示的设置。最关键的设置是一定要定义变量“out”。
图2
3.按快捷键“Ctrl+F8”新建一个名为“button”的按钮符号(按钮的设计要尽量简单)。在按钮上输入“重置”两个字,如图1所示。
4.右键点击按钮,点选弹出菜单中的“动作”命令,在“动作”面板中输入如下代码:
//release事件是在鼠标指针经过按钮时释放鼠标按钮
on(release){
//变量frame的作用是纪录当前帧数
frame = 0;
//函数getTimer()可以返回影片已经播放的时间,单位为毫秒
n = getTimer();
}
5.回到主场景中。按快捷键“Ctrl+L”打开库,把库中的影片剪辑符号“fps”拖拽到主场景中。
6.右键点击影片剪辑“fps”,点选弹出菜单中的“动作”命令,并在“动作”面板中输入如下代码:
//onClipEvent是一个“事件”触发器。当某个事件发生时,就执行花括号中的语句。
//load事件是当影片剪辑被载入时,即执行语句。
onClipEvent (load) {
frame = 1;
n = 0;
}
//enterFrame事件是以影片每执行一帧就执行一次语句
onClipEvent (enterFrame) {
//变量time用来纪录
time = (getTimer( )- n)/1000;
//Math对象的ceil方法可以返回大于等于括号中数值并与其最接近的整数
//当前帧数frame除以播放时间time即可得到当前的帧速率
out = Math.ceil(frame/time);
//变量frame(帧数)进行累加
frame++;
}
到这里,这个帧速率测试器就设计好了。现在只要把它直接复制并粘贴到所要测试的动画中就可以使用了。注意,使用测试器时,最好先在被测试动画的场景中新建一层,然后再把测试器复制、粘贴到该层中,这样便于调整测试器的位置以及修改和清除。