在开发游戏过程中通常会用到一个经常编写的重复的代码,比如加载游戏地图,从地图中加载指定点的集合,序列帧的播放等等,下面的这个类就可以完全实现,而不需要重复的编写。
/*** 通用工具* * @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 loadPoint(CCTMXTiledMap map,String name){CCTMXObjectGroup objectGroup = map.objectGroupNamed(name);// 获取僵尸位置信息ArrayList> objects = objectGroup.objects;// 分别以x和y为键,获取坐标值信息---->封装到点集合中List points = new ArrayList();for (HashMap 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 frames, int num, String filepath) {if (frames == null) {frames = new ArrayList();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 frames, int num, String filepath) {if (frames == null) {frames = new ArrayList();// frames信息加载for (int i = 1; i <= num; i++) {frames.add(CCSprite.sprite(String.format(filepath, i)).displayedFrame());}}CCAnimation animation = CCAnimation.animation("", 0.2f, 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);}}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!