从帧转换到手动内容切换
早期的 Flash 开发人员使用框架,因为它们可以在 Flash 播放器中本地使用,以托管其应用程序的各种屏幕(通常是游戏)。最终,他们可能偶然发现一个问题,因为他们使用了框架,并且忽略了由此产生的困难,并且寻求保持框架结构的方法,同时也消除了使用框架及其复杂性的障碍。解决方案是使用 Sprite
后代类,或者使用单帧导出帧作为 MovieClip
s(对于那些在 Adobe Flash CS 中设计的帧),并使用 addChild()
和 removeChild()
手动切换内容。
管理器类应该准备好所有子帧类,并且每当调用转换时,可以使用与此类似的函数:
var frames:Vector.<DisplayObject>; // this holds instances to ALL children
var currentFrame_alt:int; // current frame. Can't use the property
function changeFrame(frame:int):void {
removeChild(frames[currentFrame_alt]);
addChild(frames[frame]);
currentFrame_alt=frame;
}
所有的孩子都可以发送和收听事件,Event.ADDED_TO_STAGE
用作 gotoAndStop()
定位该帧之后发生的任何事情的入口点,任何外向转换都可以编码为基于字符串的事件,这些事件正在 Main
类中被监听,然后执行过渡。
frames[0].addEventListener("startGame",startGame); // assuming frame 0 is a "Play" button
function startGame(e:Event):void {
changeFrame(1); // switch to frame 1 - will display frames[1]
}
当然,应该预定义字符串集,例如,介绍屏幕可以有两个按钮来启动游戏,例如开始游戏和开始静音,按钮应该分派不同的事件,然后处理在经理班中有所不同。
这种模式可以根据需要尽可能深入。如果项目的任何帧包含具有多个帧的 MovieClip,则也可以使用此方法将其解耦为精灵。