仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3819|回复: 18
打印 上一主题 下一主题

[学习教程] IOS制作之cocos2d-iphone源码剖析(2):Director仓酷云

[复制链接]
若相依 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:37:12 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
视图是仪表盘模型是发动机控制器是控制芯片CoreData---管理数据OBJC刚学的时候觉得CD很高深其实他是最容易用的库之一简介

CCDirector卖力创立和处置主窗口,和办理场景的的实行。同时卖力:


  • 初始化OpenGLES的context
  • 设置OpenGL像素格局(默许是RGB565)
  • 设置OpenGL缓冲深度(默许是0-bit)
  • 设置投影形式(默许是3D)
CCDirector一样平常作为单件利用,尺度用法是:[[CCDirectorsharedDirector]methodName]。IOS下[CCDirectorsharedDirector]前往的对象是CCDirectorDisplayLink。
CCDirector承继自UIViewController。CDirector是端的引擎的中心,它把持全部运转历程。一样平常初始化代码以下:
  1. //MainWindowwindow_=[[UIWindowalloc]initWithFrame:[[UIScreenmainScreen]bounds]];//Directordirector_=(CCDirectorIOS*)[CCDirectorsharedDirector];[director_setDisplayStats:NO];[director_setAnimationInterval:1.0/60];//GLViewCCGLView*__glView=[CCGLViewviewWithFrame:[window_bounds]pixelFormat:kEAGLColorFormatRGB565depthFormat:0/*GL_DEPTH_COMPONENT24_OES*/preserveBackbuffer:NOsharegroup:nilmultiSampling:NOnumberOfSamples:0];[director_setView:__glView];[director_setDelegate:self];director_.wantsFullScreenLayout=YES;//RetinaDisplay?[director_enableRetinaDisplay:useRetinaDisplay_];//NavigationControllernavController_=[[UINavigationControlleralloc]initWithRootViewController:director_];navController_.navigationBarHidden=YES;//AddSubViewdoesntworkoniOS6[window_addSubview:navController_.view];//[window_setRootViewController:navController_];[window_makeKeyAndVisible];//createthemainsceneCCScene*scene=[CCScenenode];....//andrunit![director_pushScene:scene];
复制代码
初始化流程:
1.director_=(CCDirectorIOS*)[CCDirectorsharedDirector];
[CCDirectorsharedDirector]前往的对象是CCDirectorDisplayLink,创立CCScheduler(调剂器)、CActionManager(举措办理器)、CCTouchDispatcher(触摸事务处置器),并把创立的举措办理器到场调剂器,然后调剂器就在工夫片离挪用CActionManager相干办法。(相干文件:CCDirector.m,CCDirectorIOS.m)
2.[director_setAnimationInterval:1.0/60];设置FPS。
3.初始化GLView,为衬着筹办一个视图。
3.[director_setView:__glView];
[director_setDelegate:self];
Director是承继于UIViewController,设置视图和代办署理者。
4.CCScene*scene=[CCScenenode];
创立主场景。
5[director_pushScene:scene];
把主场景推进场景仓库,并实行。
义务



  • MemoryHelper:利用purgeCacheData办法,能够主动扫除一切cocos2d缓存的数据
  • SceneOpenGLHelper:能够设置OpenGL的Alpha夹杂和深度检测(setAlphaBlending、setDethTest)
  • DirectorIntegrationwithaUIKitview:
  • DirectorSceneLandscape:场景结构
  • DirectorSceneManagement:办理场景(runWithscene,pushScene,popScene,replaceScene,end,pause,resume,stopAnimation,startAnimation,drawScene)
属性



  • runningThread:cocos2d线程
  • runningScene:以后正在运转的场景,cocos2d一次只能运转一个场景
  • animationInterval:FPS
  • displayStats:把持是不是显现一些统计信息
  • isPaused:把持Director是不是停息
  • isAnimating:把持Director是不是运转
  • projection:设置OpenGL的投影
  • totalFrames:从Director入手下手运转,实行的帧数
  • secondsPerFrame:每帧用时
  • deltegate:完成CDirectorDelegate协定的代办署理对象
  • scheduler:调剂器
  • actionManager:举措办理器
  • touchDispatcher:用户触摸操纵的处置器
检察更多相干代码:test/DirectorTest.m

由于封闭文档写的相当好在遇到新框架的时候弄明白框架的功能去文档里搜搜框架的ProgrammingGuide很有用要弄明白框架类的继承结构写iOS的程序不一定都是用OBJC
若相依 该用户已被删除
沙发
 楼主| 发表于 2015-1-30 17:01:03 | 显示全部楼层
众多研发人员积极参与到iOS平台的开发中来也就不足为奇了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-8 04:33

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表