用到的组件(TDXDraw,TDXImageList,TDXSpriteEngine):


原文链接:http://www.delphigamedev.com/tutorials/dxtut3.htm

代码下载

在 这一教程里,我们将回到原点——使用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组件的项目实体(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:转载请保留以上版权信息

转载于:https://www.cnblogs.com/waterfalleagle/archive/2010/06/27/1766333.html

DelphiX教程系列 3 - 动画 part 1相关推荐

  1. DelphiX教程系列 4 - 滚动背景 part 1

    用到的组件: (TDXDraw, TDXImageList, TDXSpriteEngine, TDXTimer, TDXInput) 原文链接:http://www.delphigamedev.co ...

  2. DelphiX教程系列 1 - 使用键盘和摇杆

    用到的组件(TDXInput.TTimer): 原文链接:http://www.delphigamedev.com/tutorials/dxtut1.htm 在这一教程里,我们将会学习如何使用键盘来移 ...

  3. 计算机动漫与游戏制作与影视,中职中专计算机动漫与游戏制作专业系列教材·动画与影视后期制作:After Effects CS4技能应用教程...

    中职中专计算机动漫与游戏制作专业系列教材·动画与影视后期制作:After Effects CS4技能应用教程 语音 编辑 锁定 讨论 上传视频 <中职中专计算机动漫与游戏制作专业系列教材·动画与 ...

  4. 【Unity3D 教程系列第 1 篇】Unity如何去掉自带动画?

    这是[Unity3D 教程系列第 1 篇],如果觉得有用的话,欢迎关注专栏. 打开Unity,在左上角点击 File 选项后,执行如下操作 文解步骤:File → BuildSetting → Pla ...

  5. CSS3 经典教程系列:CSS3 圆角(border-radius)详解

    <CSS3 入门教程系列>前一篇文章详细介绍了 CSS3 RGBA 特性的用法,今天这篇文章我们在一起来看看 CSS3 中用于实现圆角效果的 border-radius 属性的具体用法. ...

  6. XAML实例教程系列 - 资源(Resources)

    在Windows 8 Metro应用开发中,XAML主要用于应用界面设计,无论是开发人员还是设计人员经常会设计自定义用户界面或者控件行为,其中会涉及到不同方面的代码设计,例如控件模板,控件样式,动画设 ...

  7. SVG 入门教程系列列表

    SVG 入门教程系列列表: SVG 教程 (一) SVG 教程 (二)矩形 SVG 教程 (三)圆形,椭圆,直线 SVG 教程 (四)多边形,曲线,路径 SVG 教程 (五)文本,Stroke 属性, ...

  8. 微信小程序之组件 —— 微信小程序教程系列(19)

    什么是组件: 组件是视图层的基本组成单元. 组件自带一些功能与微信风格的样式. 一个组件通常包括开始标签和结束标签,属性用来修饰这个组件,内容在两个标签之内. <tagname property ...

  9. 微信小程序的如何使用全局属性 —— 微信小程序教程系列(5)

    微信小程序提供了app.js文件,用于放置一些全局的函数和全局的属性. 一般情况下,我都会把一些常用的函数和属性写在app.js文件内,这样不用在页面之间传值,或者不用重复加载. 下面以全局属性为例 ...

最新文章

  1. 【SVO2.0 安装编译】Ubuntu 20.04 + Noetic
  2. python向量机使用方法_Python中支持向量机SVM的使用方法详解
  3. iOS 取消多余tableView的横线的写法
  4. findfont: Font family [‘sans-serif‘] not found. Falling back to DejaVu Sans.
  5. vue如何设置视频封面_vue怎么制作朋友圈封面视频
  6. 实践论和矛盾论是任何人必修的一课
  7. SpringBoot启动成功后,访问接口报错404(error:“Not Found“)
  8. 计算机硬盘从桌面消失了,如何解决win10硬盘分区不见了_win10机械硬盘突然消失解决方法...
  9. #!/bin/bash和#!/bin/sh是什么意思以及区别
  10. cc2650 7x7封装更换为 5X5 4x4
  11. 使用UE4创建一个简单真实的地球(一)
  12. HEVC Cabac解码
  13. 虚拟机WindowServer2003共享文件夹
  14. 常用的几种PPT做图小技巧!
  15. 【华为OD机试真题 python】完美走位【2022 Q4 | 100分】
  16. 署名用by还是from_【转】SCI投稿流程各个步骤的经验谈
  17. docker安装及设置镜像源-zls
  18. mysql 数据库中 int(3) 和 int(11) 什么区别?
  19. warning: #223-D: function “xxx“ declared implicitly
  20. 解决helix.toolkit obj模型贴图查找失败导致的异常

热门文章

  1. php 取经纬度,php根据地址获取百度地图经纬度的实例方法
  2. 批量画同心不同半径圆lisp_cad绘制同心圆lisp二次开发源代码
  3. qt添加菜单纯代码_Qt Creator 插件开发(3):添加菜单项
  4. java spring mvc_java spring mvc 全注解
  5. C语言指针变量的定义和使用
  6. C语言数组元素的查询
  7. 考研规划计算机科学与技术,2021考研:计算机科学与技术研究方向及冲刺复习规划...
  8. 没有bug队——加贝——Python 练习实例 33,34
  9. 利用python进行数据分析之准备工作(1)
  10. mysql 代替分号_除了使用分号(;)终止符之外,还有其他可执行MySQL查询的内置命令吗?...