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

上一节我们说到了键盘控制,能让我们的下圈圈动起来,这让我着实的兴奋。那么这一节,我们让我们的圈圈消失掉,取而代之的是类似于“合金弹头”的人物造型,每一次接近于现实游戏的进步都让我感觉到兴奋,让我们看看该如何操作。
我们看一下我们原本实体里的 render组件

复制内容到剪贴板

代码:

var Render:SimpleShapeRenderComponent = new SimpleShapeRenderComponent();

Render.showCircle = true;
Render.radius = 25;
Render.positionReference = new PropertyReference("@Spatial.position");

entity.addComponent( Render, "Render" );

平淡无奇,只能看出是一个圆,半径为25像素。
我们来稍微改动一下,恐怕我们再也不需要这个圆了

复制内容到剪贴板

代码:

var Render:SpriteRenderComponent = new SpriteRenderComponent();

Render.loadFromImage = "../media/idleright.png";
Render.positionReference = new PropertyReference("@Spatial.position");

entity.addComponent( Render, "Render" );

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

复制内容到剪贴板

代码:

package
{
import com.pblabs.engine.resource.ResourceBundle;
public class Resources extends ResourceBundle
{
[Embed(source="../media/idleright.png", mimeType="application/octet-stream")]
public var ImgIdleRight:Class;

}
}

很明显,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,这是很有意思的一件事,就好比你控制的人物在空闲时候自己会擦擦枪,跑起来把枪抗在后背上?



发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

(Spamcheck Enabled)