C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十八) 完美精灵之八面玲珑(WPF Only)②
2010-10-01 07:07:47 来源:WEB开发网紧接着上一节,首先得解释一下为什么需要将这272张图片合成为一张大图。因为如果游戏中还有装备、坐骑等其他设置,那么我们就需要对图片源进行时时的合成;同时对272张甚至更多的图片进行合成效率高还是对2张大图进行合成效率高这是显而易见的。在本节例子中,主角由身体(衣服)及武器两个部分组成;因此,我们还需要定义一个交错数组来保存已经加载的角色装备合成图到内存中:
/// <summary>
/// 角色图片缓存
/// 交错数组示例PartImage[a,b][c,d]
/// a为衣服代号(在本例中也可以理解为身体代号,因为换衣服就相当于换角色身体)
/// b为武器代号
/// c为角色朝向代号
/// d代表当前动作帧所处于整合图中的列数
/// 本例中1-5列为站立,6-13列为跑动,14-20列为攻击,21-26列为施法,27-34列为死亡
/// 本例中PartImage = new BitmapSource[10, 20][,];即初步设定有10个角色,20种武器
/// </summary>
public static BitmapSource[,][,] PartImage = new BitmapSource[10, 20][,];
例如PartImage[0,6]即代表0号角色拿着6号武器8个方向所有动作帧图片源
PartImage[4,0]则代表4号角色空着手8个方向所有动作帧图片源
……依此类推
如果您的游戏中还有帽子及坐骑,则需要BitmapSource[,][,,,] PartImage这样将第二组定义为4维数组。
……依此类推
当然,你也可以使用Hashtable(哈希表)、Dictionary(字典)等来代替PartImage[,][,]。但是在数字类型键与对象值对应保存的方式中,我更倾向于交错数组,因为它更清晰、优雅且高效。
Tags:开发 WPF Silverlight
编辑录入:爽爽 [复制链接] [打 印]- ››开发学院教你用SQL 语句最快速清空MySQL 数据表的...
- ››WPF学习笔记12. Binding (5)
- ››WPF学习笔记11. Binding (4)
- ››WPF学习笔记10. Binding (3)
- ››WPF学习笔记9. Binding (2)
- ››WPF学习笔记8. Binding
- ››WPF学习笔记7. Resource
- ››WPF学习笔记6. RoutedEvent
- ››WPF学习笔记5. DependencyProperty
- ››WPF学习笔记3. Navigation
- ››WPF学习笔记之2. Dispatcher
- ››WPF学习笔记之1. Application
更多精彩
赞助商链接