【发布时间】:2012-10-01 19:56:29
【问题描述】:
在我们正在开发的游戏中,我们需要为一个大小为 485x485 的大型精灵设置动画,并且动画大约有 30 帧。我们在为此类工件设置动画时遇到问题。我尝试了以下列出的一些解决方案,但遗憾的是我们还没有找到解决方案。
平铺
看起来将每一帧都放在一个大图块中是不可行的,因为:
- 纹理大小必须是 2 的幂,因此在大多数设备上显示为黑色
- 当我将纹理大小设置为 2 的幂时,对于大多数设备来说它变得太大了
- AndEngine seems to be 1024x1024 推荐的最大纹理大小。
单独的精灵
另一个选项是加载每个纹理,因此每个帧,单独并将其放入Sprite(如described here)。这非常有效,并且在正确的时间切换每个精灵的可见性会导致用户看到动画。
这种方法的问题是加载整个动画需要相当长的时间。由于加载屏幕,这在最初加载游戏时不可见,但在游戏后期需要更改动画并且游戏需要大约 2-3 秒才能加载。不能选择加载加载屏幕。
在单独的线程上加载
我试图将纹理加载到一个单独的、新创建的线程中,但即使在线程加载纹理时,游戏的绘制似乎也已暂停。
其他选项?
我不知道任何选项,似乎没有其他人尝试为大于 50x50 像素的纹理设置动画,因为很难找到有类似情况的人。
我的问题是:是否可以在 AndEngine 中为大型纹理设置动画?
【问题讨论】:
-
嘿,sebazzz,你能成功地做单独的精灵方法吗,如果是的话,你能帮我解决那个特定的行 this.loadTexture("character-default", idx);在哪里写或者其他需要什么?
-
是的,它在某种程度上是成功的。虽然加载动画需要一些时间,但我们能够屏蔽它。 loadTexture 方法只返回一个 ITexture 实例,您可以将该语句替换为任何返回 ITexture 的语句。
-
所以我必须创建这么多 ITexture 作为框架,你能解释一下关于屏蔽的更多信息吗,如果你能在技术上帮助我,对我来说会更好。并感谢您的回复。
-
我正在使用 TexturePackLoader。我的加载函数是这样的:
TexturePack spritesheetTexturePack = new TexturePackLoader(this.game.getTextureManager(),"gfx/").loadFromAsset(this.game.getAssets(), "monster.xml"); spritesheetTexturePack.loadTexture();如何使用 MegaAnimatedSprite 和上述函数?谢谢!
标签: android textures andengine