【发布时间】:2011-09-04 03:29:42
【问题描述】:
我有 2 个导出器方法(计划有更多),它们基本上从我的 sprite 制作器中获取我的 sprite 定义,并将其导出到一个 PNG 文件和一个描述 PNG 的 XML 文件中。现在,我已经将这两种方法塞进了我的 Sprite 类中进行测试,但它们并不真正属于那里。所以我想如果我为exporters和importers做一个接口,然后为每种类型的importer/exporter创建一个类就好了,对吧?
现在的问题是我的两个方法没有相同的参数,所以我不能很容易地使用接口。
第一个导出器是一个“有组织的”导出器,它以人类可以轻松遵循的方式导出帧,没有任何限制。它只需要精灵定义和一个文件名(没有扩展名)然后生成一对文件。
第二个导出器是一个优化打包的导出器,将采用相同的参数加上最大宽度和高度。现在它不是最佳的,它不会重新调整框架的大小,它只会选择下一个适合的插槽。也许还有其他我还没有想到过的选项(参数)。
现有导出器的 XML 相同,但 PNG 不同。以后的某个时间,我可能希望拥有其他类型的元数据导出器,例如 JSON。
对于现有的出口商,他们都遵循这种模式:
- 确定输出 PNG 的大小(每种方法不同)
- 制作具有该大小的位图对象
- 设置并开始写入我的 XML 文件
- 写出一堆与帧无关的元数据
- 遍历每个序列(比看起来要复杂一点)
- 对于每一帧:
- 确定框架的去向(每种方法不同)
- 从上方写入有关此框架的信息,包括精灵表位置和大小
- 在上面计算的位置和大小处将框架绘制到输出位图
- 对于每一帧:
- 保存并关闭文件
我可以根据要求提供代码链接。
(我在问题中添加了“Importer”,因为有一天我想将进口商添加到这些出口商)
关于如何将这些导出器从我的 Sprite 类中拉出以及如何保持它们相关性的任何建议?
【问题讨论】:
标签: c# architecture interface