首先,介绍一个类,CCNode,一般翻译成为节点类,也是cocos2dx中的主要类,继承自CCObject,任何需要画在屏幕上的对象都是节点类。最常用的节点类也就是上一篇文章的几个,CCScene,CCLayer,CCSprite,CCMenu。节点类包含的主要功能如下:
每个节点都可以含有子节点。
节点含有周期性回调方法。
可以含有动作。
接下来,介绍一下坐标系。
cocos2dx中的坐标系支持OpenGL坐标系。原点在屏幕左下角,x轴向右,y轴向上。
然后说一下世界坐标系的概念。顾名思义,世界,就是游戏世界。cocos2dx中的元素是有父子关系的层级结构,通过CCNode设置位置使用的是相对其父节点的本地坐标系,而非世界坐标系。说到
锚点:这个概念很重要,锚点指的是贴图和所在节点原点重合的点的位置,因此只有在CCNode类节点使用贴图的情况下,锚点才有意义。锚点的默认值是(0.5,0.5),表示的并不是一个像素点,而是一个乘数因子,(0.5,0.5)表示锚点位于贴图长度乘0.5,宽度乘0.5的位置,即贴图的中心。这时,调用setposition(x,y)方法的时候,指的就是把贴图的中心设置到(x,y)的位置,改变锚点成(x2,y2),那么调用setposition(x,y)方法的时候,就是把(x2,y2)设置到(x,y)位置。
接下来,说一下场景类,CCScene,它也是CCNode的子类,和CCNode相比,它只是添加了一个特性,那就是拥有自己的锚点,位于屏幕的正中央。我们一般把屏幕上所有显示的父节点设置为我们定义的节点,这个父节点的角色一般由场景承担。定义一个场景类实例如下:
CCScene* HelloWorld::scene() {
// 新建场景类实例
CCScene *scene = CCScene::create();
// 定义布景层
HelloWorld *layer = HelloWorld::create();
// 将布景层加入场景
scene->addChild(layer);
// 返回场景类
return scene; }
通过create方法构造一个场景,然后将定义的布局层作为子项加入到场景中,要显示的成员都在布景层中。
布景层类 CCLayer同样是CCNode的子类,并且在此基础上实现触屏事件代理协议,并且可以处理输入,包括触屏和加速度传感器。
每个游戏场景中可以有很多层,每个层负责显示不同的东西,有的层负责显示背景,有的负责显示敌人,有的现实菜单等。
CCLayer 类的 init 函数在创建布景层时被调用,在 init 函数中定义要显示 的对象并把它作为子类加入场景中。
颜色布景层类 CCLayerColor 是 CCLayer 类的子类,包含 CCLayer 类的特性,并且有两 个拓展功能:可以为布景层增添颜色,以及设置不透明度。 在onenter函数中初始化
void LayerTest1::onEnter() {
LayerTest::onEnter();
setTouchEnabled(true);
CCSize s = CCDirector::sharedDirector()->getWinSize();
CCLayerColor* layer = CCLayerColor::create( ccc4(0xFF, 0x00, 0x00, 0x80), 200, 200);
layer->ignoreAnchorPointForPosition(false);
layer->setPosition( CCPointMake(s.width/2, s.height/2) );
addChild(layer, 1, kTagLayer); }
对于 CCLayerColor 类来说,还有一个 比较常用的函数 setBlendFunc,可以让布景层的颜色产生渐变效果。比如,需要在整屏添加 全屏的一些覆盖效果、全屏变黑或者全屏变暗时,都可以使用这个方法
今天就先到这了。。。