Flash中OnEnterFrameBeacon未公开的类
相信大家对影片剪辑的"onEnterFrame"事件一定很熟悉吧,只要播放头在影片剪辑所在桢上就可以不断的触发"onEnterFrame"事件,并执行相应的动作。在平常的动画制作中,有时我们会希望一个普通的对象也具有类似影片剪辑的’’onEnterFrame"功能,在这里我告诉大家一个最简便的方法:使用[OnEnterFrameBeacon]类!
[OnEnterFrameBeacon]类是MM未公开的类之一,但它并非隐藏的内建类,而是flash mx 2004自带的自定义类,所以使用它绝对安全,不用担心未来版本是否会支持的问题。它的作者更是大名鼎鼎,就是现在为广大闪客推崇的《flash mx编程创意与实现》作者,加拿大闪客奇才Robert Penner。好了,下面让我们看看如何使用它吧!
----test.fla 开始---
(第一桢上写代码)
mx.transitions.OnEnterFrameBeacon.init();
//::重要:: 调用[OnEnterFrameBeacon]类方法’init’进行初始化。其实它也只有这一个方法,功能就是为MovieClip(内建对象)包装上广播器的相关方法。
var wiyiObj=new Object();
//生成一个普通对象
wiyiObj.showHello=function(){
//为wiyiObj对象定义一个简单方法,在输出面板上显示"Hello!"
trace("Hello!");
}
wiyiObj.onEnterFrame=function (){
//象为一个影片剪辑一样为wiyiObj对象定义’onEnterFrame’方法
this.showHello();
//调用wiyiObj对象的’showHello’方法
}
MovieClip.addListener(wiyiObj);
//::重要:: 向MovieClip(内建对象)注册wiyiObj对象为侦听者。它的作用就是接受MovieClip对象不断发出的’onEnterFrame’消息,然后执行自己的’onEnterFrame’方法。
---test.fla 结束--
好了,现在测试一下吧,wiyiObj对象是不是不断地向您说"Hello!"呢?
最后需要补充的是,wiyiObj和普通影片剪辑有所不同,wiyiObj对象从注册为MovieClip对象的侦听者起开始不停地触发’onEnterFrame’事件,并不受播放头的影响。如果你需要它停止触发’onEnterFrame’事件,可以这样:
-------------------------------------------------
MovieClip.removeListener(wiyiObj);
//从MovieClip的侦听者组注销wiyiObj对象