前端之家收集整理的这篇文章主要介绍了
Cocos2d—android 中常用的工具类,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
<span style="font-size:18px;"> 在开发游戏过程中通常会用到一个经常编写的重复的代码,比如加载游戏地图,从地图中加载指定点的集合,序列帧的播放等等,下面的这个类就可以完全实现,而不需要重复的编写。</span>@H_301_1@
/**
* 通用工具
*
* @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);
}
}@H_301_1@