Director类源代码不完全分析

一, 帧与帧之间时间间隔
/* 标记是否下次帧逻辑时是否清除(忽略)_deltaTime */
    bool _nextDeltaTimeZero;    
/* 上一次逻辑帧运行到当前的时间间隔,用来判断是否应该进行下次逻辑帧,上一次帧执行的时间记录在 _lastUpdate 变量里面*/
    float _deltaTime;

下面两个函数是用来操作下一次的 _deltaTime是否有效的,当整个游戏暂停的时候,这时_deltaTime会不断累计,就会用到了_nextDeltaTimeZero这个变量,标记着下次的_deltaTime为0这样就会不出现恢复暂停后跳帧,而是继续当前帧顺序开始。

inline bool isNextDeltaTimeZero() { return _nextDeltaTimeZero; }
    void setNextDeltaTimeZero(bool nextDeltaTimeZero);

计算_deltaTime的函数,会在每个逻辑循环里面都调用。
/** 计算 deltaTime 上次逻辑帧调用的时间和当前时间的时间间隔。如果 nextDeltaTimeZero为true则deltaTime为0*/    
    void calculateDeltaTime();    
/* 上次主循环帧执行到当前的时间间隔 _deltaTime */
    float getDeltaTime()  const;

二, Scene管理
/* 当前正在执行的场景,由这个变量可以知道,Cocos2d-x同一时间只能执行一个场景。*/
    Scene *_runningScene;
    
    /* 下一个要执行的场景,这块肯定是在场景切换的时候要用到的 */
    Scene *_nextScene;
    
    /* 是否清除场景的标记,当为真时,旧的场景就收到清除消息 */
    bool _sendCleanupToScene;

    /* 场景的堆栈 */
    Vector<Scene*> _scenesStack;
复制代码

Cocos2d-x同时只能执行一个场景,场景切换的时候有一个 _nextScene。清除场景时有一个标记 _scendCleanupToScene,等待执行的场景都存在 一个栈里面 _scenesStack

    /** 通过调用 `popToSceneStackLevel(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值