cocos引擎重要类学习

转载地址:http://www.cnblogs.com/mmidd/p/3761290.html

copy一下总结

Node类:

  1. Node 类在Cocos2d-x里地位显赫,它是显示对象(在手机等设备里显示的东西)的基类。
  2. Node类是一个树状结构的一个结点,它最多只有一个父结点,可以有多个子结点,这些子结点存放在一个vector的数据结构中
  3. 创建Node对象不要使用new方法,而使用create方法。
  4. Node类的内存管理是走的autorelease机制的,所以不要delete对象而是采用Cocos2d-x的引用计数机制来释放对象。
  5. 向node结点中加子结点时用addchild方法(这里如果忘记了addchild都干了些什么可以翻到上面回顾一下)
  6. 将node结点显示到屏幕上使用visit方法,在visit方法里面会调用draw来绘制node.我们在使用的时候可以重载draw方法这样就可以让node按自己的方式来显示出来。
  7. node还支持名称,tag(id)等标识,可以通过这些标识来查找node的指针。
  8. Node还支持一些旋转,变形,绽放等操作,并且这些设置子结点也会继承的。
  9. Node里面还引用了 定时器,事件分发,动作管理器等。
  10. Node有一些自己的事件,当被加入到入结点中会调用 enter当被移出父结点时会触发 exit

Scheduler 类:

  1. Scheduler 类是cocos2d-x里的调度控制类,它分两种调度模式 按帧调度与按时间间隔调度 ,当然,如果时间间隔设置小于帧的时间间隔那么就相当于按帧调度了。
  2. 按帧调度被集成在Node类里,调度的回调函数就是Node::update函数。
  3. 按时间调度可以分两种形式对象形式, 一种 是Ref基类的对象,一种是任意对象。
  4. Scheduler实际上是存储了很多小任务的列表管理器,每一个定时任务都是以Timer类为基类实现的。管理器的列表以对象的指针哈希存放的。
  5. cocos2d-x引擎启动后Director类会创建一个默认的调度管理器,所有的Node类默认都会引入Director的调度管理器,调度管理器会在Director的 mainLoop里的 drawscene方法里被每一帧都调度。

Director 类:

子类 DisplayLinkDirector:

这个类实现了Director的几个关键的虚函数。

mainLoop这个是最主要的了,上面我们一再说逻辑循环 逻辑循环,其实都是指这个函数,所有的操作,动画,渲染,定时器都在这里驱动的。

游戏主循环里反复的调度 mainLoop来一帧一帧的实现游戏的各种动作,动画……. mainLoop来决定当前帧该执行什么,是否到时间执行等等

void DisplayLinkDirector::mainLoop()
{
    if (_purgeDirectorInNextLoop)
    {
        _purgeDirectorInNextLoop = false;
        purgeDirector();
    }
    else if (! _invalid)
    {
        drawScene();
     
        // release the objects 内存管理(autorelease)
        PoolManager::getInstance()->getCurrentPool()->clear();
    }
}

下面我们做个总结。

Director主要管理了场景,四个事件的分发,渲染, Opengl对象,等

它主要是以场景为单位来控制游戏的逻辑帧,通过场景的切换来实现游戏中不同界面的变化。

其实 mainloop这个函数 调用 了drawscene来实现每一帧的逻辑主要是渲染逻辑。

上一章节,我们读到了application里面有一个run方法 ,在run方法里面有一个死循环,那个是游戏的主循环,在那个死循环里不断的调用 director->mainLoop这个就是在主游戏循环里不断的执行逻辑帧的操作.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值