如何将LibGDX中Animation<TextureRegion>的内容迁移至另一个Animation?
如何将LibGDX Animation的内容迁移至另一个Animation
嘿,这事儿其实挺简单的!在LibGDX里,要把animation1的内容完整迁移到animation2,完全不用重复你之前做的纹理拆分操作,直接复用animation1已有的核心参数就行。下面给你两种靠谱的实现方式:
方式一:直接复制核心属性(推荐)
Animation的核心就是帧列表、每帧持续时间,另外别忘了复制播放模式(比如循环、单次播放),这样能完整复刻原动画的行为:
// 从animation1提取关键参数 float frameDuration = animation1.getFrameDuration(); Array<TextureRegion> keyFrames = animation1.getKeyFrames(); Animation.PlayMode playMode = animation1.getPlayMode(); // 用这些参数初始化animation2,完成迁移 animation2 = new Animation<>(frameDuration, keyFrames); animation2.setPlayMode(playMode);
方式二:复制独立的帧数组(避免引用共享)
如果你担心后续修改其中一个动画的帧会影响另一个,可以复制一份帧数组(而不是直接复用引用),这样两个动画的帧列表是完全独立的:
// 复制帧数组,创建独立副本 Array<TextureRegion> copiedFrames = new Array<>(animation1.getKeyFrames()); // 初始化animation2 animation2 = new Animation<>(animation1.getFrameDuration(), copiedFrames); animation2.setPlayMode(animation1.getPlayMode());
针对你现有代码的补充
结合你给出的初始化代码,假设你已经创建了animation1,现在要把它的内容转到animation2,直接用上面的代码就行——完全不用再跑一遍TextureRegion.split和循环赋值的流程,既省代码又高效。
内容的提问来源于stack exchange,提问作者Ian Gallegos
相关产品推荐
相关产品推荐

