Flash游戏开发中应该使用的显示层次结构和代码结构
ActionScript2.0和ActionScript3.0有很大的区别,3.0是真正的面向对象语言,而且在内置类的结构体系上要更加合理易懂,同时显示编程的引入以及简单清晰的显示层次结构更是ActionScript的一次升华,将2.0中不推荐的做法从一定程度上摈弃。
那么今天来说说Flash游戏开发中三种层次结构和代码书写的比较(无论是2.0还是3.0都适用)。
第一种:按照游戏过程的顺序将需要使用的所有影片剪辑逐次放到主时间轴帧的场景中,同时代码大部分放到影片剪辑或者按钮的脚本中。如果这是一部电影,我的评分是★☆☆☆☆。
第二种:游戏中的各元件按从外到里的顺序分别为:场景[文档[游戏[游戏中的元件]]],而代码统一放到主时间轴的一个叫action层的第一帧中。
解释一下,场景 即舞台,它里面只放一个影片剪辑那就是文档,文档就像ActionScript3.0中的文档类,文档中放有游戏中的诸如生命值显示等影片剪辑和一个叫做游戏的影片剪辑,而游戏中“可以玩的东西”都放到这个游戏的影片剪辑里,这样如果是在rpg游戏中,我们要控制地图移动,则只要控制这个游戏影片剪辑移动和主角反向移动即可。而代码都放到第一帧中也是flash帮助中推荐的最佳做法,不过就是经常需要在某个影片剪辑播放结束时执行一些代码,如停止播放这个影片剪辑,则需要另想它法,有三种做法,1将这类少量的代码放到这个影片剪辑的最后一帧中,此时仍然能保证大部分代码在主时间轴的第一帧;2计算该影片剪辑总共要播放的时间毫秒,用SetTimeout方法去执行播放后的代码;3.在EnterFrame事件中判断当前帧是否为最后一帧来执行播放后的代码。
这种做法我的推荐指数是★★★★☆
第三种:完全采用面向对象的编程方式,影片剪辑的层次结构(在AS3中叫做显示层次结构)采用第二种方法中的层次结构,但游戏中需要用代码控制的影片剪辑或者是经常变化在每次打开游戏都“不固定”的影片剪辑,不要放到舞台上去,而由AS自动产生,而代码全部放到外部文件中。甚至可以做的“绝”一点:AS2中舞台上只放一个命名为“文档”的空影片剪辑(即影片剪辑中什么都没有),它绑定到外部的一个类,程序的执行从这个类的构造函数开始,这种更像是应用程序的开发;AS3中则不放任何显示对象,只接把外部的一个类名写到该flash属性的文档类框中。更“绝”的做法就是像FlashDevelop中的开发方式,所有的代码都在外部,FlashDevelop产生的swf文件用反编译工具导出后则发现无论是舞台或者时间轴上还是库里面,什么都没有,只有属性的文档类框中有先前自己定义的一个类名。
这种做法我的推荐指数是★★★★★
作者:Rick Carter
出处:http://pains.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库