Flex游戏篇——游戏开发概述
概述
游戏开发是个很大的课题,该系列只简单讲述如何使用Flex技术平台搭建一个简单的游戏框架,如何设计能优化游戏的CPU占用,内存等,最后制作一个完整的Flex小游戏(提供源码)。
游戏的呈现
方式1:元件方式
这种方式比较适合小型的游戏,游戏元件数量少的情况。当游戏元件数量大时就不合适了:元件会对游戏图形、音频等资源进行拷贝,浪费大量内存;并且元件会独立管理自身的呈现,这个开销是很严重的。该方式的好处是开发比较简单,所以也比较常用,是flash游戏的主要开发方式。
方式2:绘制方式
当游戏精灵数量比较多时方式1显得有点力不从心了,画面太卡了,影响游戏体现。用绘制方式能够很好解决画面呈现的问题,这个方式的特点是,背后有一张游戏场景的图像缓存,当画面需要呈现时,先根据游戏数据把游戏画面先绘制到图像缓存,然后再把图像缓存绘制到游戏场景进行显示,这样做呈现效率高,并且游戏图像等资源不需要被拷贝,节省内存。该方式的缺点是开发复杂,开发难度较大。传统的PC游戏都是采用绘制方式呈现的。
方式3:混合方式
根据上面的介绍和结合Flex技术平台的特点,应该综合使用2种方式。
绘制方式:制作游戏主场景呈现。
元件方式:制作游戏外框,游戏菜单,交互窗体,游戏属性窗体等部分。
另一个明星Silverlight
Silverlight,RIA的另一明星,炒得沸沸扬扬。对于Silverlight,目前比较遗憾的是,它目前只支持元件方式的呈现,不支持画面的直接绘制(可能本人见识有效还没有找到相关资料),这对Silverlight的游戏性能大打折扣。本人做过一个简单的测试,做一个人物行走的游戏精灵(动画一直播放的),在Silverlight场景上放上1000个,画面已经很卡了,人物动作生硬。我在Flex的场景上,用绘制方式,绘出10000个时卡的程度才和Silverlight上的相似。Silverlight还在发展中,据说Silverlight 4对画面渲染作了优化,改善游戏性能。感兴趣的期待下吧。
相关文档:
<?xml version="1.0" encoding="utf-8"?>
<!-- http://yecon.blog.hexun.com/31030831_d.html -->
<!-- http://www.slsay.com -->
<Application name="FileReference_load_test"
xmlns="http://ns.adobe.com/mxml/2009"
xmlns:mx="library:adobe/flex/halo"
xmlns:net= ......
1,直接设置属性:
源代码如下:
<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml" xmlns:ri="AAA.test.*" >
<mx:DateChooser dayNames="[日,一,二,三,四,五,六]"
monthNames="[一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月]" />
......
HScrollBar {
downArrowUpSkin:
Embed(source=”/assets/downArrow.png”);
downArrowOverSkin:
Embed(source=”/assets/downArrow.png”);
downArrowDownSkin:
Embed(source=”/assets/downArrow.png”);
upArrowUpSkin:
Embed(source=”/assets/upArrow.png”);
upArro ......
/*============使用==========*/
var contextmenu:ContextMenuManager=new ContextMenuManager();
contextmenu.add("最大化",menuHandle);//menuHandle处理函数
/**==================ContextMenuManager.as==========================*/
package file
{
import flash.display.Interact ......