程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> cocos2d-x調度器原理

cocos2d-x調度器原理

編輯:C++入門知識

 

程序運行後每達到一幀的時間間隔就會執行一次

 CCDisplayLinkDirector::mainLoop(
    =   (!

           CCPoolManager::sharedPoolManager()->

 

 CCDirector::drawScene(

     (!->|
    
    ->
    ->++
    ->

 

 

調度器CCScheduler

定時器 和 普通intervalCCScheduler 中的主要存儲變量。(


     _listEntry *m_pUpdatesNegList;        
     _listEntry *m_pUpdates0List;            
     _listEntry *m_pUpdatesPosList;        
     _hashUpdateEntry *m_pHashForUpdates; 
     _hashSelectorEntry *m_pHashForTimers;

 

 CCScheduler::update(= ; 
     (m_fTimeScale != *=
    tListEntry *pEntry, *
 ((! pEntry->paused) && (! pEntry->->target->
 ((! pEntry->paused) && (! pEntry->->target->
 ((! pEntry->paused) && (! pEntry->->target->
     (tHashTimerEntry *elt = m_pHashForTimers; elt !===  (! m_pCurrentTarget->
             (elt->timerIndex = ; elt->timerIndex < elt->timers->num; ++(elt->->currentTimer = (CCTimer*)(elt->timers->arr[elt->->currentTimerSalvaged = ->currentTimer-> (elt->
                    elt->currentTimer->->currentTimer =
        elt = (tHashTimerEntry *)elt->
         (m_bCurrentTargetSalvaged && m_pCurrentTarget->timers->num == 
     ( i = m_pScriptHandlerEntries->count() - ; i >= ; i--* pEntry = static_cast<CCSchedulerScriptHandlerEntry*>(m_pScriptHandlerEntries-> (pEntry->->  (!pEntry->->getTimer()->
 (pEntry->->
 (pEntry->->
 (pEntry->->= ; 
=

 

對於定時器,每個節點只能注冊一個定時器,因此調度器中存儲定時器數據的結構體主要保存了注冊節點和優先級。每一幀通過迭代調用鏈表中節點的

對於普通定時器,每個節點能注冊多個定時器,引擎使用回調函數(選擇器)來區分同一個節點的不同定時器。調度器為每一個定時器創建了一個

 

//

 

((! pEntry->paused) && (! pEntry->


 

 

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved