gpt4 book ai didi

c# - 具有不同参数的多个导入器/导出器方法

转载 作者:行者123 更新时间:2023-11-30 17:16:20 24 4
gpt4 key购买 nike

我有 2 个导出器方法(计划有更多),它们基本上从我的 sprite 制作器中获取我的 sprite 定义,并将其导出到一个 PNG 文件和一个描述 PNG 的 XML 文件中。现在,我已经将这两个方法塞进我的 Sprite 类中进行测试,但它们并不真正属于那里。所以我想如果我为导出商和进口商创建一个接口(interface),然后为每种类型的进口商/导出商都有一个类,对吧?

现在的问题是我的两个方法没有相同的参数,所以我不能很容易地使用接口(interface)。

第一个导出器是一个“有组织的”导出器,它以人类可以轻松遵循的方式导出帧,没有任何限制。它只需要 Sprite 定义和一个文件名(没有扩展名),然后生成这对文件。

第二个导出器是一个优化打包的导出器,它将采用相同的参数加上最大宽度和高度。现在它不是最优的,它不会重新调整框架的大小,它只是选择下一个适合的插槽。对于此方法,可能还有我尚未想到的其他选项(参数)。

现有导出器的 XML 相同,但 PNG 不同。 future 一段时间,我可能会喜欢其他类型的元数据导出器,例如 JSON。

对于现有的导出商,他们都遵循这种模式:

  • 确定输出 PNG 的大小(每种方法不同)
  • 制作一个具有该大小的位图对象
  • 设置并开始写入我的 XML 文件
  • 写出一堆与框架无关的元数据
  • 遍历每个序列(比看起来复杂一点)
    • 对于每一帧:
      • 找出框架的去向(每种方法不同)
      • 从上方写下有关此帧的信息,包括 sprite-sheet 位置和大小
      • 在上面计算的位置和大小将帧绘制到输出位图
  • 保存并关闭文件

我可以根据要求提供代码链接。

(我在问题中添加了“进口商”,因为有一天我想将进口商添加到这些导出商中)

关于如何将这些导出器从我的 Sprite 类中拉出来以及如何使它们保持关联有什么建议吗?

最佳答案

我想最好是创建一些基本导出类,它只具有所有导出类之间共享的一些基本功能,如 addSpritesaveToFile。之后你可以创建一些继承这个类的其他类加上它们具有添加保存参数的特定函数,如下所示:

class baseExported
{
public abstract void addSprite(Bitmap texture);
public abstract bool export(String target);
};

class ExporterA : baseExporter
{
public override void addSprite(...) {...};
public override bool export(...) {...};
}

class ExporterB : baseExporter
{
public override void addSprite(...) {...};
public override void setMaxDimentions(int maxHeight,int maxWidth) {...};
public override bool export(...) {...};
}

class ExporterC : baseExporter
{
public override void addSprite(...) {...};
public override void setMaxDimentions(int maxHeight,int maxWidth) {...};
public override void addMetaData(String someData) {...};
public override bool export(...) {...};
}

关于c# - 具有不同参数的多个导入器/导出器方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7278008/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com