2011-09-04 53 views
4

我想知道在libgdx中是否有一种简单的动画方法。我正在考虑一个API,我可以指定纹理的持续时间和结束位置(就像在Flash的Tween库中一样)。libgdx中的动画

我在谷歌搜索和最近的东西,我得到的是动画类libgdx有,我相信,需要用户指定每个关键帧的纹理。

new Animation(0.5f, texture1, texture2, texture3); 

回答

11

您可以使用TextureRegion#分裂(纹理,tileWidth,tileHeight)得到了一堆纹理区域的一个纹理,如果他们在一个网格中。您也可以使用一组松散图像上的TexturePacker将它们打包成单个纹理,然后使用TextureAtlas加载。这有一个好处,它可以从每个框架中去除空白以获得更好的打包效果,并且也可以做别致的东西(如果两个框架是相同的,它只会打包一次)。将您的框架图像命名为anim_1.png,anim_2.png等,然后根据框架编号将所有名为“anim”的纹理区域作为有序列表。

另请注意,libgdx中的Animation类非常简单。不要犹豫,如果它不符合你的需求,写你自己的。动画类只有大约20行代码。

2

这取决于你想要什么样的动画。如果它是基于不同图像的动画,那么是的,您应该使用具有不同纹理区域的Animation类。但是,如果您想要基于移动插值的动画,则应该使用补间库,就像在Flash中一样。

Libgdx有一个内置的Interpolator帮助程序,它允许您使用缓动来创建简单的插值。如果你想要一个像闪存一样的完整补间引擎,可以看看java Universal Tween Engine

0

在libgdx中进行动画制作很简单。我所做的是在Animation参数中使用一组纹理或纹理区域,而不是放置很多纹理或纹理区域。然后我宣布我然后设置动画的playmode像这样 - >animation.setPlayMode(Animation.PlayMode.LOOP);它的作品。我使用像这样设置的float runTime变量绘制动画runTime + = delta或runTime = runTime + delta --> spriteBatch.draw(animation.getKeyFrame(runTime), x, y, width, height);