您的位置:首页 > 移动开发 > Cocos引擎

Cocos2D-Android- 基础

2015-12-06 21:20 381 查看

Cocos2D-Android- 基础

cocos2d简介

cocos2d是一个基于MIT协议的开源框架,用于构建游戏、应用程序和其他图形界面交互应用。可以让你在创建自己的多平台游戏时节省很多的时间。

cocos2d最初使用phony和Objective-c编写的。

Cocos2D也拥有几个主要版本,包括Cocos2D-iPhone、Cocos2D-X,以及被社区普遍看好的Cocos2D-HTML5和JavaScript bindings for Cocos2D-X。

同时也拥有了非常优秀的编辑器(独立编辑器),例如SpriteSheet Editors、Particle Editors (粒子系统)、Font Editors 、 Tilemap Editors(编辑游戏地图)。

cocos2d基于MIT协议的免费开源框架,用户可以放心使用,不用担心商业授权的问题。

截至2013年12月10日数据更新,国内已有47款月收入超千万手游,其中32款基于Cocos2d-x开发。

cocos2d架构

博文: http://blog.csdn.net/jjiss318/article/details/8798516

使用cocos2d在android下开发游戏

引入cocos2d-android.jar

将fps_images.png图片放在assets目录下

cocos2d下的时间单位是秒

cocos2d中的坐标系

cocos2d中的坐标系与android中的坐标系并不同。

cocos2d中的坐标系是标准的数学坐标系,即左下角为原点

cocos2d中有锚点的概念

锚点: 以一个CCSprite为例,在设置它的位置时,即把其锚点放在那个位置上

默认的锚点为元素的中心(0.5, 0.5)

设置锚点的API: setAnchorPoint(0,0); //设置在原点(右下角), 最大锚点坐标为: (1, 1) -> 左上

使用cocos2d开发时图片的放置位置

在平时的android开发中,我们一般都把图片放在values/drawable-xx目录下,

但是,当使用cocos2d开发时, 图片应放在assets目录下

相关API

图形引擎

可以把游戏开发想成在拍一部电影

图形引擎主要包括下面API

CCDirector

导演采用的是单例设计模式

导演的生命周期一般要与Activity相绑定

主要作用

控制场景的切换(运行场景)

控制开始和暂停(线程的开启)

//基本功能介绍
CCDirector director = CCDirector.sharedDirector();  //获得导演
director.setDeviceOrientation(CCDirector.kCCDeviceOrientationLandscapeLeft);   //设置游戏方向水平(当然也可以在清单文件中,将应用的横竖屏写死)
director.setDisplayFPS(true);    //是否展示帧率(开发中)
director.setAnimationInterval(1.0f/30);   //锁定帧率:指定一个帧率 (当然只能向下锁定)
director.setScreenSize(480, 320);    //设置屏幕的大小(可以自动屏幕适配)
CGSize winSize = CCDirector.sharedDirector().getWinSize();  (获取屏幕的大小)

//必须做的步骤
//1. 获取CCGLSurfaceView, 开启线程
CCGLSurfaceView surfaceView=new CCGLSurfaceView(this); //这个位置必须传递Activity
director.attachInView(surfaceView);   //开启线程
//2. 运行场景
director.runWithScene(ccScene);//  运行场景

//3. 与activity的生命周期绑定
@Override
protected void onResume() {
super.onResume();
director.resume();
}
@Override
protected void onPause() {
super.onPause();
director.onPause();
//director.pause();
}

@Override
protected void onDestroy() {
super.onDestroy();
director.end();// 游戏结束了
}


CCScene(场景)

本身被添加在导演上,可以往他身上添加图层。

目前该类没有什么具体的功能,它只是作为一个项目中需要展示内容的根节点存在

但是,它有许多子类, 这些子类有一个功能就是:在场景切换时,会有动画效果

一般我们在为了在图层切换时,会有动画效果,一般会选择一个CCScene的子类

CCTransitionFlipX (x轴左翻)

CCTransitionShrinkGrow(交错换)

CCTransitionSlideInL(场景从左移入推出原场景)

//1.被导演运行
director.runWithScene(ccScene);//  运行场景

//2.为使图层在切换时会有动画效果, 可以通过切换场景来实现
CCScene scene = CCScene.node();  //获取场景
scene.addChild(newLayer);//你要切换的新图层
CCFlipXTransition transition = CCFlipXTransition.transition(2, scene, 0);  //可以看出,其实就是对场景进行了包装
CCDirector.sharedDirector().replaceScene(transition);//切换场景 ,参数 新的场景

//3.向场景上添加图层
scene.addChild(new WelcomeLayer());


CCLayer(图层)

可以在它的上面添加精灵: addChild();

一般在开发时,都是写一个图层类,在上面处理我们游戏中的精灵等元素的关系

cocos2d规定,多个图层存在时,只能有一个图层来处理触摸事件: setIsTouchEnabled(true);// 打开触摸事件

可以在图层上处理触摸事件(即覆写下列方法)

图层要想处理触摸事件,必须打开触摸事件的开关:

ccTouchesBegan(MotionEvent event) //按下

ccTouchesMoved(MotionEvent event)

ccTouchesEnded(MotionEvent event)

ccTouchesCancelled(MotionEvent event)

在cocos2d中进行游戏开发时,触摸事件能晚开就晚开

对于触摸事件的处理, 由于cocos2d坐标系与android坐标系不同的原因,应先进行坐标转换

//在ccTouchesBegan 中进行坐标转换
@Override
public boolean ccTouchesBegan(MotionEvent event) {
// 把android坐标系中点的点 转换成cocos2d坐标系中的点
CGPoint point = this.convertTouchToNodeSpace(event);
return super.ccTouchesBegan(event);
}


CCSprite(精灵)

即我们游戏开发中的最小单位,一般被添加在图层上。

下面来看看与其相关的API

//加载一个精灵,在初始化时设置好其相关的图片
CCSprite ccSprite = CCSprite.sprite("sprite.jpg");
ccSprite.setAnchorPoint(0,0);// 设置锚点
ccSprite.setPosition(100, 100);//设置坐标
ccSprite.setVisible(true);// 设置不可显示
ccSprite.setOpacity(0);//设置不透明度 值越大 越不透明  0-255

//镜子效果
ccSprite.setFlipY(true);// X水平翻转,Y垂直翻转

//在图层上添加精灵
this.addChild(ccSprite);  //this代表当前图层对象
//  this.addChild(ccSprite, z);  // z代表显示优先级, 越大越高, (默认是谁后添加谁在上面)
//this.addChild(ccSprite, 1, 10);//  参数3 标签(类似Id,使我们可以在图层上利用标签找到它)
/this.getChildByTag(10); 根据Tag标签 找对应的孩子


CCNode

它是CCSprite, CCScene, CCLayer的爹!!!!

它抽取类其孩子的一些公共方法,例如

setAnchorPoint()

removeSelf()

+ccp(); 构造一个点

addChild();

CGRect getBoundingBox(); 获得其所占的矩形
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cocos2d