走近AS(1)-了解触发帧频事件的重要性 |
| 作者:佚名 来源:闪吧 作者: 卢巧音中文网 更新:2007-1-13 20:48:58 错误报告 我要投稿 |
走近AS(1)-了解触发帧频事件的重要性 了解触发帧频事件的重要性 事先声明,这不是教程。只是我在学习Flash的几年中,碰到的一些认为初学者值得注意的 细节问题。希望大家能够对这些问题的解决方法感兴趣,并举一反三,解决更多的实际问题。另外个人技术水平有限,其中肯定会有不少谬误,还请大家不吝赐教。 众所周知,传统动画以及Flash的播放是基于"帧"的,帧频就是单位时间内(1秒)播放的帧数。在默认情况下,Flash的帧频是12帧/秒(12 Frames Per Second 或者说 FPS=12),也就是1秒钟播放Flash中 12帧的影片内容。
触发事件是Flash中的一个重要概念,粗略的说也就是满足某种条件下发生的事件或结果。假如主场景下有一个按钮,我们想按下它的时候播放影片。那我们就要在按钮上写上
on(press){ play(); }
按下按钮时,满足了on(press)--------->(按钮按下)的条件,所以执行了其代码块内的函数play(); 这就是一种最简单的触发事件。
触发帧频事件也是触发事件中的一种,从意译上说就是:每经过播放1帧就触发事件一次。
触发帧频事件是最常见也是最重要的一种触发事件。举个例子,如果你希望你定义的函数或预定的方法每隔一个帧频事件就被触发一次,并且贯穿整个场景。那么你就不能把这个函数或方法写在单独的一帧上,那样的话,这个函数只能执行一次。
用个浅显的例子来证明:我们在主场景建一个叫"a"的MC,MC内有两个动态文本,实例名分别为x,y。我们希望在移动鼠标的时候文本会跟随鼠标移动,并且文本内显示的数字是鼠标当前的坐标,最重要的是这个显示是贯穿于整个影片的播放过程中。
如果只在帧上这样写
startDrag("a",true);//实例为"a"的MC,跟随鼠标中心 a.x.text=Math.floor(a._x);//"a"实例中的x动态文本的文字是"a"的x属性值取下限值 a.y.text=Math.floor(a._y);//同理
实际效果是:只在播放第一帧的时候文字才会变,而在之后的影片播放中,文字均是不变的。
效果在这
[全屏欣赏] 但如果我们领会了上面触发帧频事件的意义,我们则会这样写
startDrag("a",true); onEnterFrame=function(){//每播放一帧就会激发一次 a.x.text=Math.floor(a._x); a.y.text=Math.floor(a._y); }
onEnterFrame就是每当进入一个帧的意思,当然除了在帧上用onEnterFrame的方法,我们还可以在MC上用onClipEvent(enterFrame)的方法声明。
看看效果
[全屏欣赏] 想当初,我因为没有理解这个帧频触发事件,而在这个鼠标位置显示的例子上耗费了大量的时间和精力。希望我现在的这个讨论能给初学者的学习带来一点点的帮助,让大家少走一点弯路。
原文件如下:
点击浏览该文件
|
|
| 文章录入:skyuu 责任编辑:skyuu |
|
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |