【问题标题】:What to do when an imagesheet is too wide?当图像表太宽时该怎么办?
【发布时间】:2014-03-23 00:34:52
【问题描述】:

我正在尝试使用 Lua 和 Corona Simulator 为 Android 进行开发。 Android 接受的最大图像尺寸为 2048x2048 像素。我目前有一个 148 像素高和 4690 像素宽的图像表。该表由单行上的 35 个图像组成。有没有办法可以将此图像表分解为多行帧,并且仍然使用此处列出的简单动画方法 (http://docs.coronalabs.com/api/library/graphics/newImageSheet.html) 而不是复杂的动画方法,还是我真的必须单独声明每一帧?

我尝试将图像缩小到 1995 像素的宽度,然后在程序内将其重新放大,但这(显然)导致分辨率很差。我也尝试过(虽然这是另一个出现相同问题的图像)将图像分成两行,所以它是两倍高和一半宽,但我无法使用 Corona 中的 Simple 方法我上面提到过。 Complex 方法似乎是最后的手段,因为它需要大量的工作和代码来分别按 x、y、宽度和高度来声明图像表中的每一帧。

【问题讨论】:

  • 您的图像是 4690 x 4690 吗?你试过什么?
  • 您可以动态生成复杂方法的“选项”表。
  • @Schollii 图片高 148 像素,宽 4690。每帧是 148 高和 134 宽。我会用我尝试过的方法更新问题。
  • @EgorSkriptunoff 我不确定你所说的即时是什么意思。据我所知,复杂的方法需要我单独声明每个帧,我真的不想这样做。
  • @Ravn - 你可以在一个循环中构建你的大表。

标签: android lua coronasdk sprite-sheet


【解决方案1】:

序列从左到右、从上到下导航您的纹理图像。所以使用 5x7 的子图像网格(5 行 7 列,而不是 1 行 35 列),以这种方式排序。您的图像将是 740 x 938。

或者,您可以有多个图像表和switch between them as required

【讨论】:

  • 第一个解决方案的问题是程序不会自动切换到下一行,我不知道如何让它这样做。如果我按照您的建议进行操作,则会在尝试到达第 8 帧时引发错误。
  • 至于第二个建议,我曾考虑过这样做,但我更喜欢一个简单的解决方案。无论如何,我绝对讨厌使用计时器,所以如果真的遇到这种情况,我可能会使用复杂的方法。
  • 这两种解决方案都不涉及计时器。也许如果您显示一些代码,我可以使答案更有帮助。另外,程序确实会自动切换到下一行,我在发布前确认了这一点。
  • 天哪,你是对的!当我第一次尝试多线解决方案时,我一定是搞砸了!谢谢楼主的坚持! :)
猜你喜欢
  • 2012-10-23
  • 1970-01-01
  • 1970-01-01
  • 2010-11-06
  • 2011-01-29
  • 1970-01-01
  • 1970-01-01
  • 2021-02-21
  • 2014-04-24
相关资源
最近更新 更多