原来一直看别人的技术分享今天也自己来写个技术分享吧,希望对像我这样的菜鸟级程序猿有所帮助。
cocos2d-x是跨平台的,基于C++语言实现,C++我不会,所以我参照官方www.cocos2d-x.org
下面列出,我在开发中遇到的问题:(开发环境:visual studio 2010,关于环境的搭建,官网上都有详细说明)
VS中添加资源: 官方说在项目中配置xcopy命令可以实现直接在vs中添加图片,我不知道怎么无法实现,最后还是只能将图片资源从文件系统添加到Resource文件夹中。
项目编译完安装在android模拟器上报Opengl错误:可能是模拟器不支持的原因,安装到手机上就可以了.
下面主要说说Cocos2d的框架:
AppDelegate:相当于Android中的Application节点,里面主要是做一些初始化程序的操作,比如SimpleGame中根据屏幕的宽高来设置资源的根目录是HD还是SD
CCFileUtils::sharedFileUtils()->setResourceDirectory("hd");
CCDirector:导演类,负责管理和切换场景,还负责初始化OpenGL各项参数;
整个cocos2d引擎的控制者,控制场景的切换,引擎的参数设置。
是个单列模式,sharedDirector()取得对象
设置显示帧率:
CCNode,引擎中最重要的元素,所有可以被绘制的东西都是派生于此。它可以包含其它CCNode,可以执行定时器操作,可以执行CCAtion。
锚点和位置:
CCNode的默认锚点是自身的中心。
锚点的原点在自身的左下角,正方向为向右,向上,所以默认锚点坐标(0.5,0.5)
能够改变自身CCNode的锚点值(x,y)
X方向的位移:x*CCNode.w
Y方向的位移:y*CCNode.h
当x或者y为正值,移动的方向为左边,或者下边
什么地方用到锚点
改变自身CCNode坐标,在执行某些动作的时候会用到
位置Position
①原点(0,0)为屏幕的左下角或者父CCNode的左下角
②正方向为屏幕的右边或者上边
一般锚点都设置为(0,0)
只改变Position来调整坐标
CCScene、CCLayer、CCSprite都继承自CCNode,CCNode又继承自CCAction
CCScene:场景类,游戏中的界面,列入闪屏,菜单,游戏主界面等。
CCLayer : 图层类
每个图层都有自己的触发事件,该事件只能对其拥有的元素有效,而图层之上的元素所包含的元素,是不受其事件管理的
场景中放入图层,图层中放精灵,精灵执行动作,导演来操控场景,这应该就是cocos2d的核心流程了。
坐标系:
导演类有下面这个方法
CCPoint location=touch->locationInView();//计算出touch点的位置
location=CCDirector::sharedDirector()->convertToGL(location)//将touch点的坐标点,转换为opengl坐标点
需要说明的是:
屏幕坐标系:已屏幕的左上角为原点,向右,向下为正方向
GL坐标系:以屏幕的左下角为原点,向右,向上为正方向
所以在CCLayer的触摸事件处理中,注意两个坐标系的转换很重要
脚本库Lua
Lua