cocos2dx核心类详解 CCNode 锚点等

本文详细介绍了Cocos2d-x中的节点类CCNode,包括其基本功能、坐标系概念及场景类CCScene的使用方法。重点阐述了节点的子节点管理、周期性回调、动作应用以及锚点概念。同时,通过实例展示了如何创建场景类和布景层CCLayer,以及如何利用CCLayerColor类进行颜色和透明度的设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先,介绍一个类,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,可以让布景层的颜色产生渐变效果。比如,需要在整屏添加 全屏的一些覆盖效果、全屏变黑或者全屏变暗时,都可以使用这个方法

今天就先到这了。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值