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对象

posted @ 2012-01-15 18:04  rob_2010  阅读(171)  评论(0编辑  收藏  举报