代码改变世界

DelphiX教程系列 3 - 动画 part 1

2008-08-10 00:35  Nicholas Yuen  阅读(1577)  评论(0编辑  收藏  举报
用到的组件(TDXDraw,TDXImageList,TDXSpriteEngine): TDXDraw TDXImageList TDXSprite

代码下载


在这一教程里,我们将回到原点——使用DXDraw组件。这是DelphiX里的组件,它能让我们很容易地在窗体上(或以全屏的方式)显示我们的游戏。它也 能让我们很容易地去除绘制图形时产生的闪烁。稍后我们会看看如何去除之前示例中产生的闪烁。我们将介绍其他3个组件——DXImageList、 DXSpriteEngine和DXTimer。


DXDraw 组件
首 先我们要做一些额外的工作来设置DXDraw组件。添加一个DXDraw组件到窗体上,并设置其Align属性为alClient。这将令DXDraw组 件的画板(Canvas)覆盖整个窗体。如果您想以全屏方式运行,则设置它的doFullScreen属性(在属性列表的Options区域)为 True,并在Display属性里为它选择适合的分辨率。我们也可以设置其BorderStyle属性为bsNone来在全屏模式下隐藏windows 工具条。您还要在窗体的OnKeyDonw事件里输入如下的代码:

if key = 27 then close;


这会在我们按下ESC键(键码为27)的时候退出程序。如果您现在运行程序,那么您将看到一个黑色的画板。我们需要摆一些东西在这个空虚的黑色画板上面。接下来我们介绍另一个组件——DXImageList。


DXImageList 组件
我们简单地介绍一下普通的ImageList组件,它的用法与DXImageList组件差不多。


该 组件能让我们在一个组件里存放所有我们游戏中用到的图像。从背景到精灵(sprites)所有用到的图像都应该存放到这里以供程序访问。在继续之前,我们 需要为DXImageList的DXDraw属性设置为DXDraw1。这会把图像正确地联接起来,那么它们就能显示在DXDraw的表面 (surface)上。

DXImageList - Editing Items

DXImageList组件的项目实体(Items entry)的对话框


我 们准备添加“Ye Olde Delphi Game Developer”的logo到我们的图像列表,并将其显示在屏幕上。我们只需点击DXImageList的Items属性右边的按钮来调出一个对话 框。您可以点击左边的按钮来新建一个图像实体(Image entry)。然后从Picture属性里选择相关的文件并在您关闭对话框前为其命名为“Logo”。


如果您添加如下的代码到您窗体的MouseDown过程里去,那么在您点击程序屏幕的时候,您的logo都会被复制到上面。

DXImageList1.Items[0].Draw(DXDraw1.Surface,x,y,0);

DXDraw1.Flip;


这 看上去并不是很有趣,但这仅仅是是通过鼠标点击的X和Y坐标,把图像列表里的第一张图像抽出来并显示在DXDraw的表面(surface)上。我们随后 必须调用DXDraw的Flip过程来显示图像,因为在这之前,我们所做的都是在不可见的缓冲区中完成的。通过调用Flip过程,我们把图像显示到 DXDraw的表面上。我们待会再来看它,在接下来的part 2里,我们将介绍TDXSpriteEngine组件的用法,并做一些与动画相关的有趣的事情和在屏幕上移动一个角色。


版权说明

本系列译文在博客园发表,除允许在互联网上自由转载外,不允许以其它任何方式拷贝、编辑、印刷出版、制作发行及传播,包括不允许 在笔者未知晓的情况下制作成各种格式的电子文档并传播,更不得在未经笔者本人允许的情况下以任何形式的拷贝用于商业用途。笔者对本系列译文保留有追究其侵 权责任的权利。

若需制成电子文档并用于非商业用途方式的传播,请保留以下版权信息,并与笔者联系邮寄副本一份。

作者:Nicholas.Yuen
网名:小丸
Email:ruanjiayuan AT gmail.com ( AT -> @)
Blog:http://genkagen.blogspot.com
时间:2008.08.10
Copyright: 2008 Nicholas.Yuen All right resver

PS:转载请保留以上版权信息