关于游戏引擎PushButton的教程和演示(三)

首先,谈不上教程,我也只是把我喜欢的写给大家而已,我对Flex技术并没有什么深入的理解,只是喜欢。

我对Flash并没有比大家更多的认识(我的朋友都知道,我不过只是做些ASP.NET动态网站和进行些浏览器编程,如ExtJs,jQuery),一个偶然的想法,我打开了FlexBuilder,辗转多个网页,感谢chrome,让我找到了PushButton,以下教程的大部分内容都来自于Matthew Casperson的博客,如果你也像我一样,对PushButton或者游戏开发忽然很感兴趣,请跟着Matthew Casperson一起开始游戏之旅。

如果你需要了解PushButton,你只需要在Google上搜索flex pushbutton就能获得一个关于 PushButton的概括性介绍,比较关键的介绍是,这是一个模块化的以组件为核心的游戏引擎(在以后的开发中,您将有深刻的体会),对于网络中的些许介绍,我想声明一点的是,当前的版本为r470,我并没有发现一些博客中所提到的ProjectManager.air(这困扰了我很久),不过很快你将发现这并不影响什么。

http://pushbuttonengine.com/,官方论坛,在这里你能找到你想要的大部分,包括下载链接以及http://pushbuttonengine.com/forum/index.php,PushButton的官方论坛,社区里人们很友善,这里包括技术交流也有组件买卖。 
——————————————————————————————————————————————————————————————————
上一节我们说到了键盘控制,能让我们的下圈圈动起来,这让我着实的兴奋。那么这一节,我们让我们的圈圈消失掉,取而代之的是类似于“合金弹头”的人物造型,每一次接近于现实游戏的进步都让我感觉到兴奋,让我们看看该如何操作。
我们看一下我们原本实体里的 render组件
1 var Render:SimpleShapeRenderComponent = new SimpleShapeRenderComponent(); 
2  
3  Render.showCircle = true;                                            
4  Render.radius = 25;                                                  
5  Render.positionReference = new PropertyReference("@Spatial.position");    
6  
7  entity.addComponent( Render, "Render" ); 

 

平淡无奇,只能看出是一个圆,半径为25像素。
我们来稍微改动一下,恐怕我们再也不需要这个圆了
1 var Render:SpriteRenderComponent = new SpriteRenderComponent();
2  
3  Render.loadFromImage = "../media/idleright.png";                                                                                       
4  Render.positionReference = new PropertyReference("@Spatial.position");    
5  
6  entity.addComponent( Render, "Render" ); 

 

从代码上看很容易看出我们替换成了一张图片,图片如下,这很酷,很“合金弹头”。

 到这可能我们预期的目的已经达到了,的确,你的想法是对的。但是,作为素材,加载的速度是很重要的,放在文件中被下载固然是一种天经地义的做法,但是在这里,PushButton提供给了我们一种新的做法,将图片加载到flash中,使加载速度更快捷(当然这是我的理解,Matthew Casperson也的的确确是这样说的,具体如何实现的,在这里我仍然无法回答,也无法验证,欢迎专家来讲解将图片加载到FLASH里的原理)。这里我将这些资源理解为嵌入式资源。

 

 1 package
 2 {
 3     import com.pblabs.engine.resource.ResourceBundle;
 4 
 5     public class Resources extends ResourceBundle
 6     {
 7         [Embed(source="../media/idleright.png", mimeType="application/octet-stream")]
 8         public var ImgIdleRight:Class; 
 9         
10     }
11 }

 

 

 很明显,com.pblabs.engine.resource.ResourceBundle的这个ResourceBundle起到了这个作用,我们看到了图片被Embed,而且还设置了mimeType.

这和重要,在以后的学习过程中,无论声音(mp3文件),图片,以至于我们未来遇到的最重要的xml都将以这种方式嵌入到我们的游戏中去。

而这些XML将构成我们以后游戏的主框架,也就是表示层和控制层相分离,这种业务分离是很重要的,无论你在从事网站开发还是其他方面的开发,都至关重要。这些将在以后的章节中介绍,现在我们将用as代码实现一个简单游戏,而后,我们将业务分离采用xml+as的方式构筑我们的游戏,这也符合大多数开发模式。

 

明天将要回学校了,就写到这。

 

DEMO浏览页面:http://www.brighthub.com/hubfolio/matthew-casperson/media/p/61010.aspx

DEMO下载页面:http://www.brighthub.com/hubfolio/matthew-casperson/media/p/61012.aspx

英文教程页面: http://www.bukisa.com/articles/226072_pushbutton-tutorial-series-loading-resources(注:该国外教程服务器不稳定,偶尔睡觉)

下一期我们将会使这个角色动起来,Animation,这是很有意思的一件事,就好比你控制的人物在空闲时候自己会擦擦枪,跑起来把枪抗在后背上?

 

感谢 Matthew Casperson,感谢无私的分享。 

 

 

 

posted on 2010-02-26 23:28  华电混球  阅读(404)  评论(0编辑  收藏  举报

导航

我的应用