<span > 在开发游戏过程中通常会用到一个经常编写的重复的代码,比如加载游戏地图,从地图中加载指定点的集合,序列帧的播放等等,下面的这个类就可以完全实现,而不需要重复的编写。</span>
/** * 通用工具 * * @author administrator * */public class CommonUtil { /** * 加载游戏地图 * @param tmxfile * @return */ public static CCTMXTiledMap loadMap(String tmxfile) { CCTMXTiledMap gameMap = CCTMXTiledMap.tiledMap(tmxfile); //便于手动平移地图 gameMap.setAnchorPoint(0.5f,0.5f); CGSize contentSize = gameMap.getContentSize(); gameMap.setposition(contentSize.wIDth / 2,contentSize.height / 2); return gameMap; } /** * 从地图中加载指定名称的点集合 * @param map * @param name * @return */ public static List<CGPoint> loadPoint(CCTMXTiledMap map,String name) { CCTMXObjectGroup objectGroup = map.objectGroupnamed(name); // 获取僵尸位置信息 ArrayList<HashMap<String,String>> objects = objectGroup.objects; // 分别以x和y为键,获取坐标值信息---->封装到点集合中 List<CGPoint> points = new ArrayList<CGPoint>(); for (HashMap<String,String> item : objects) { float x = float.parsefloat(item.get("x")); float y = float.parsefloat(item.get("y")); points.add(CGPoint.ccp(x,y)); } return points; } /** * 序列帧播放(永不停止) * * @param frames * @param num * 当前加载的图片数量 * @param filepath * 路径(通用) * @return */ public static CCAction getRepeatForeverAnimate(ArrayList<CCSpriteFrame> frames,int num,String filepath) { if (frames == null) { frames = new ArrayList<CCSpriteFrame>(); for (int i = 1; i <= num; i++) { frames.add(CCSprite.sprite(String.format(filepath,i)).displayedFrame()); } } CCAnimation anim = CCAnimation.animation("",0.2f,frames); CCAnimate animate = CCAnimate.action(anim); return CCRepeatForever.action(animate); } /** * 播放一次的序列帧 */ public static CCAnimate getAnimate(ArrayList<CCSpriteFrame> frames,String filepath) { if (frames == null) { frames = new ArrayList<CCSpriteFrame>(); // frames信息加载 for (int i = 1; i <= num; i++) { frames.add(CCSprite.sprite(String.format(filepath,i)).displayedFrame()); } } CCAnimation animation = CCAnimation.animation("",frames); return CCAnimate.action(animation,false);// 只播放一次 } /** * 判断是否被点击 * * @param event * @param node * @return */ public static boolean isClicke(MotionEvent event,cclayer layer,CCNode node) { CGPoint point = layer.converttouchToNodeSpace(event); return CGRect.containsPoint(node.getBoundingBox(),point); } // // /** // * 判断是否被点击 // * // * @param touchPoint // * @param node // * @return // */ // public static boolean isClicke(CGPoint touchPoint,CCNode node) { // return CGRect.containsPoint(node.getBoundingBox(),touchPoint); // } /** * 切换场景 * @param targetLayer */ public static voID changeLayer(cclayer targetLayer) { CCScene scene = CCScene.node(); scene.addChild(targetLayer); CCFadeTransition Transition = CCFadeTransition.Transition(1,scene); CCDirector.sharedDirector().replaceScene(Transition); }}总结
以上是内存溢出为你收集整理的Cocos2d—android 中常用的工具类全部内容,希望文章能够帮你解决Cocos2d—android 中常用的工具类所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)