CCDirector负责建立和处理主窗口,和管理场景的的执行。同时负责: node
CCDirector通常做为单件使用,标准用法是:[[CCDirector sharedDirector] methodName]。IOS下[CCDirector sharedDirector]返回的对象是CCDirectorDisplayLink。 缓存
CCDirector继承自UIViewController。CDirector是真个引擎的核心,它控制整个运行过程。通常初始化代码以下: 布局
// Main Window window_ = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Director director_ = (CCDirectorIOS*)[CCDirector sharedDirector]; [director_ setDisplayStats:NO]; [director_ setAnimationInterval:1.0/60]; // GL View CCGLView *__glView = [CCGLView viewWithFrame:[window_ bounds] pixelFormat:kEAGLColorFormatRGB565 depthFormat:0 /* GL_DEPTH_COMPONENT24_OES */ preserveBackbuffer:NO sharegroup:nil multiSampling:NO numberOfSamples:0 ]; [director_ setView:__glView]; [director_ setDelegate:self]; director_.wantsFullScreenLayout = YES; // Retina Display ? [director_ enableRetinaDisplay:useRetinaDisplay_]; // Navigation Controller navController_ = [[UINavigationController alloc] initWithRootViewController:director_]; navController_.navigationBarHidden = YES; // AddSubView doesn't work on iOS6 [window_ addSubview:navController_.view]; // [window_ setRootViewController:navController_]; [window_ makeKeyAndVisible]; // create the main scene CCScene *scene = [CCScene node]; .... // and run it! [director_ pushScene: scene];
初始化流程: spa
1. director_ = (CCDirectorIOS*)[CCDirector sharedDirector]; 线程
[CCDirector sharedDirector]返回的对象是CCDirectorDisplayLink,建立CCScheduler(调度器)、CActionManager(动做管理器)、CCTouchDispatcher(触摸事件处理器),并把建立的动做管理器加入调度器,而后调度器就在时间片离调用CActionManager相关方法。(相关文件:CCDirector.m, CCDirectorIOS.m) 代理
2. [director_ setAnimationInterval:1.0/60]; 设置FPS。 code
3. 初始化GLView,为渲染准备一个视图。 orm
3. [director_ setView:__glView]; 对象
[director_ setDelegate:self]; 继承
Director是继承于UIViewController,设置视图和代理者。
4. CCScene *scene = [CCScene node];
建立主场景。
5 [director_ pushScene: scene];
把主场景推入场景堆栈,并执行。
查看更多相关代码:test/DirectorTest.m