开发学院软件开发C语言 C#开发WPF/Silverlight动画及游戏系列教程(Game C... 阅读

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十八) 完美精灵之八面玲珑(WPF Only)②

 2010-10-01 07:07:47 来源:WEB开发网   
核心提示:紧接着上一节,首先得解释一下为什么需要将这272张图片合成为一张大图,C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十八) 完美精灵之八面玲珑(WPF Only)②,因为如果游戏中还有装备、坐骑等其他设置,那么我们就需要对图片源进行时时的合成;同时对272张甚至更多的图片进行合成

紧接着上一节,首先得解释一下为什么需要将这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[,][,]。但是在数字类型键与对象值对应保存的方式中,我更倾向于交错数组,因为它更清晰、优雅且高效。

1 2 3 4 5 6  下一页

Tags:开发 WPF Silverlight

编辑录入:爽爽 [复制链接] [打 印]
[]
  • 好
  • 好的评价 如果觉得好,就请您
      0%(0)
  • 差
  • 差的评价 如果觉得差,就请您
      0%(0)
更多精彩
    赞助商链接

    热点阅读
      焦点图片
        最新推荐
          精彩阅读