思路,通过xml保存动画配置,从图片管理器中读取图片生成animation,然后根据xml来保存起来,使用时通过id获得.
<animations> <animation id="1001" name="测试动画" duration="1" imgListName="132,123,123"/> </animations>
管理类
package com.zhfy.game.model.framework; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.g2d.Animation; import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.utils.IntMap; import com.badlogic.gdx.utils.XmlReader; import com.zhfy.game.MainGame; public class AnimationListDAO { private IntMap<Animation> animationMap; private MainGame game; private XmlReader.Element animationEs; public AnimationListDAO(MainGame game){ game.gameConfig.getDEF_ANIMATION(); animationMap=new IntMap<>(); } public Animation getAnimation(int id){ if(animationMap.containsKey(id)){ return animationMap.get(id); }else { XmlReader.Element anE = game.gameConfig.getDEF_ANIMATION().getElementById(id); if (anE != null) { String[] imageListNames = anE.get("imgListName").split(","); TextureRegion[] textureRs = new TextureRegion[imageListNames.length]; for (int i = 0; i < imageListNames.length; i++) { if (game.getImgLists().contains(imageListNames[i])) { textureRs[i] = game.getImgLists().getTextureByName(imageListNames[i]).getTextureRegion(); } else { Gdx.app.error("no animationImage", "" + imageListNames[i]); } } Animation a = new Animation(anE.getInt("duration", 1), textureRs); animationMap.put(id,a); return a; } else { Gdx.app.error("no animation", "" + id); return null; } } } }
---------------------------
未完待续