相信大家对影片剪辑的"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对象