cocos2d-x笔记(2)

本文详细介绍了cocos2d-x中CCNode的属性,包括子节点数组、父节点、摄像机、网格特效、着色器、动作管理器和计时器管理器。还讨论了节点的添加、移除以及查找方法。此外,提到了CCNode的内置事件和CCDirector的mainloop()方法在游戏循环中的作用,以及帧率的影响因素。
摘要由CSDN通过智能技术生成

一、CCNode另外一些属性

1.CCArray* Chilren:获取或设置该节点的子引用的数组。

2.CCNode* Parent:获取或设置该节点的父节点。

3.CCCamera* Camera:获取或设置该节点的摄像机状态,摄像机(CCCamera)定义了绘制节点时的视点,通常用于实现特效。

4.CCGridBase* Grid:获取或设置该节点的网格特效状态。网格应用于绘图平面上,可以实现水纹等3D特效。

5.CCGLProgram* ShaderProgram:获取或设置该节点的sharder(着色器)程序。CCGLProgram是OpenGL的glProgram的封装。

6.CCActionManager* ActionManager:获取或设置该节点所使用的动作管理器。当节点设置了新的动作管理器时,正在执行的动作管理器会被丢弃。

7.CCScheduler* Scheduler:获取或设置该节点所使用的计时器管理器。当为节点设置新的计数器管理器时,正在执行的计时器管理器会被丢弃。

二、节点CCNode继承给派生类管理节点的方法;

1.addChild(CCNode* child)::把child添加到当前节点之中。

2.void removeFromParentAndCleanup(bool cleanup):把当前节点从其父类中移除,如果cleanup为true,则调用child的clean()方法

3.void removeChildByTag(int tag):从当前节点中移除标号为tag的节点。

4.void removeAllChildrenWithCleanup(bool cleanup):移除当前节点的所有子节点,当cleanup为true,则调用child的clean()方法。

5.CCNode* getChildByTag(int tag):返回当前节点标号为tag的节点。

6.cleanup:停止此节点的全部动作计时器。

三、CCNode内置事件

//当此节点所在场景即将呈现时,会调用此方法。
virtual void onEnter();
//当此节点所在场景的入场动作结束后,会调用此方法。如果所在场景没有入场动作
//则此方法会紧跟着onEnter()后执行。
virtual void onEnterTransitionDidFinish();
//当此节点所在场景即将退出时,会调用此方法。
virtual void onExit();
//当此节点所在场景的出场动作结束后,会调用此方法。如果所在场景没有出场动作
//则此方法会紧跟着onExit()后执行。
virtual void onExitTransitionDidStart();
这些事件的默认实现通常负责处理定时器和动作的启动与暂停,因此必须在重载方法中调用父类的方法。
例如,我们可以在场景开始时设置背景音乐。代码:
void MyScene::onEnter()
{
	CCScene::onEnter();
	this->palyBackgroundMusic();
}

关于流程:

四、Cocos2d-X中,负责调用定时器,绘图,发送全局通知,并处理回收池的方法就是CCDirector::mainloop()方法,该方法按帧调用,帧间间隔有两个因素,一个是预设帧率,默认为60帧每秒;另一个是每帧的计算量大小。当逻辑处理与绘图计算量过大时,设备无法完成每秒60次绘制,此时帧率就会下降。

五、mainloop()方法会被定时调用,然而在不同的平台下调用者不同。相关源码在platform目录。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值