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(); 获得其所占的矩形
相关文章推荐
- cocos2dx骨骼动画Armature源码剖析(一)
- cocos2dx骨骼动画Armature源码剖析(二)
- 剖析iOS开发中Cocos2d-x的内存管理相关操作
- iOS 5 cocos2d 游戏开发 3ff8 实战:第4章 你的第一个游戏
- quick-cocos2d-x for mac开发环境安装配置
- Unity3D上路_01-2D太空射击游戏
- Unity3D上路_02-第一视角射击游戏
- Unity3D上路_03-塔防游戏
- Unity3D上路_04-基础资源介绍
- Unity3D上路_05-网络相关
- Cocos Studio的动画系统介绍
- OGEngine新版发布,推开发者服务平台
- Cocos2d 中 fnt文件生产工具 Bitmap Font Generator
- CCLOG调试方法与参数说明
- 你的第一个cocos2d游戏
- [Cocos2d] CCProgressTimer进度条
- [Cocos2d] Cocos2d 开发常用工具集
- 浅谈cocos2d画图
- cocos2d 环境搭建 ios xocde
- iOS cocos2d 2游戏开发实战(第3版)