Cocos2d-android游戏引擎
游戏引擎:是指一些已编写好的可编辑游戏系统或者一些交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程序而不用从零开始。
架构
图形引擎:Cocos2D Graphic
声音引擎:CocosDenshion
物理引擎:Box2d、Chipmunk
图形引擎:Cocos2D Graphic
CCGLSurfaceView surfaceView = new CCGLSurfaceView(this);
①CCDirector(导演)
主要方法:
对象的获取:director = CCDirector.sharedDirector();单例模式。
启动绘制线程:director.attachInView(surfaceView);(核心方法一)连接SurfaceView。
场景的管理:runWithScene(scene)运行场景(核心方法二)、replaceScene()替换场景。
生命周期:onResume()、onPause、end()。这三个方法都要重写,跟百度地图一样。
屏幕切换:setDeviceOrientation(CCDirector.kCCDeviceOrientationLandscapeLeft)、setScreenSize(480,320):设置屏幕分辨率,高于设置的分辨率时,引擎会自动适配。
做开发时,只在清单文件中设置全屏,横竖屏的设置用上面的方法。
帧率设置:setDisplayFPS(true)显示FPS帧率、setAnimationInterval(1.0f/60)设置帧率,每秒刷新60次。
assets文件夹下必须要有fps_images.png图片。
②CCScene(场景)
场景类,例如游戏的闪屏,主菜单,游戏主界面等。
场景的获得:CCScene scene = CCScene.node();
添加层:addChild(child);按照添加的顺序决定显示的优先级(后添加的覆盖先添加的)。
addChild(child,z);z指的是在z轴上进行排序,默认值为0.
addChild(child,z,tag);tag指定精灵的id,默认为-1.设置后可以根据getChildByTag(tag)找到相应的精灵。
③CCLayer(层)
写一个类继承CCLayer。
添加精灵:addChild();
处理touch事件:首先必须设置setIsTouchEnabled(true),使得Layer可以处理touch事件。其次可以复写父类的ccTouchesBegan、ccTouchesMoved、ccTouchesEnded、ccTouchesCancelled方法。在一个场景中的所有Layer,有且仅有一个Layer能够处理用户的touch事件。
由于Cocos2d的坐标系统与屏幕坐标系统不同,所以处理Cocos2d的点击事件时,需要先进行坐标的转换:
convertTouchToNodeSpace(MotionEvent event);将event中封装的点击坐标信息转换为CGPoint对象。
判断CGPoint对象是否在CCSprite对象的范围之内:
CGRect.containsPoint(aRect,aPoint);aRect:精灵所在的矩形区域。aPoint:CGPoint对象。
④CCSprite(精灵)
精灵的获得:CCSprite sprite = CCSprite.sprite("sprite.png");图片资源必须放在assets文件夹下。
原点:Cocos2d的坐标系统中,屏幕的左下角为坐标原点。通过sprite.getPosition()可以获得当前精灵的坐标。
锚点(anchor point):CCSprite显示时需要设置锚点信息,默认为(0.5f,0.5f),即将CCSprite图片的中间点作为图片在当前坐标系统中的基准点,通过sprite.getAnchorPoint()获取当前精灵的锚点信息。锚点可以看成把木板钉在墙上的钉的位置。
锚点的设置:setRelativeAnchorPoint(false)时锚点为(0,0)或者调用setAnchorPoint指定相关信息,当调用setAnchorPoint时,setRelativeAnchorPoint方法无效。
CGPoint:CGPoint point = CGPoint.ccp(100,0);
图片位置确定:采用锚点结合坐标综合定位(原则:坐标计算越简单越好)
镜像:setFlipX(true)在x轴上的镜像、setFlipY(true)在y轴上的镜像,目标是为了重用图片资源。
透明度:setOpacity()0—255,值越小越透明。
隐藏:setVisible(false);
移除自己:removeSelf();
精灵所在的矩形区域:sprite.getBoundingBox();
⑤CCNode
CCScene、CCLayer、CCSprite都是CCNode的子孩子。
⑥CCAction
动作类,如平移、缩放、旋转等。