|
在广大Flash设计者和开发者中,你是否遇到过需要在Flash中,时间轴运行到某一个特定点的时候去做某些操作?
虽然大家常用的做法一般都是在需要做某种操作的时间的关键帧上添加具体操作代码或者派发操作事件。这样的做法带来的问题也显而易见:那就是使得代码的维护 变得越来越困难。当项目越来越大时,你不得不在各个时间轴上寻找你做了标记和操作的那个关键帧,或者修改你的原有代码。
TimelineWatcher类的发明是在将时间轴和动作分离的原则下,为了解决在时间轴的特定帧上执行动作的问题,通过在fla文件中制定文档类,将这个TimelineWatcher引入文档类,这样就可以对特定标签的帧和结束帧进行事件监听了。
使用TimelineWatcher你可以监听时间轴的运行情况,并通过事件来触发相应的操作,实现代码的集中管理。
示例:
import com.refunk.events.TimelineEvent;
import com.refunk.timeline.TimelineWatcher;
var timelineWatcher:TimelineWatcher = new TimelineWatcher(myMC);
timelineWatcher.addEventListener(TimelineEvent.LABEL_REACHED, handleTimelineEvent);
function handleTimelineEvent(e:TimelineEvent):void {
switch (e.type) {
case TimelineEvent.LABEL_REACHED :
if (e.currentLabel==“framepoint1″) {
trace(e.currentLabel);
myMC.gotoAndStop(myMC.currentFrame);//注意这里是为了获取这一帧的元件的引用,必须执行这个操作
myMC.innermc.rotationZ = 20;
timelineWatcher.removeEventListener(TimelineEvent.LABEL_REACHED, handleTimelineEvent);
}
break;
}
}
实践中发现,如果你播放到某一帧后要获取这一帧的某个元件(不在第一帧出现),直接就获取会告诉你是Null,但你可以gotoAndStop一把,就可以了。
|