CCDirector类负责初始化OpenGL ES和控制scenes之间的转换。CCDirector类是单例的,它以栈的方式处理scenes的调用,并且知道当前哪个scene是激活状态。
如游戏中打开背包(打开背包前为场景A,背包界面为场景BAG),即BAG入栈,当前屏幕显示出来的即为BAG场景
//获取设备的宽高
CGSize size=[[CCDirector sharedDirector] winSize];
//将场景对象压入栈中,并激活(此时不能有已经激活的场景,因此该方法常用于刚进游戏时)
-(void) runWithScene: (CCScene)scene*
//替换当前激活的场景,同时将旧场景从堆栈中删除,新场景压入堆栈。
-(void) replaceScene: (CCScene)scene*
//添加新的场景进栈,并将其激活。 挂起当前运行的场景,并压栈到待运行场景队列。
-(void) pushScene: (CCScene) scene*
//当前激活的场景出栈,激活上一个场景。
-(void) popScene
//暂停。用法:[[CCDirector sharedDirector] pause];
-(void) pause
//恢复。
-(void) resume
//获取Director单例
CCDirector::sharedDirector()
//停止动画(当程序被切换时会被调用),屏幕上将不会绘制东西。示例代码如下:
CCDirector::sharedDirector()->stopAnimation();
与之对应的是
CCDirector::sharedDirector()->startAnimation();
默示获得视口(可视区域)的大小,若是DesignResolutionSize跟屏幕尺寸一样大,则getVisibleSize便是getWinSize。
CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
默示可视区域的出发点坐标,这在处理惩罚相对地位的时候很是有效,确保节点在不合辨别率下的地位一致。
CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();
不得不提的是
CCEGLView* pEGLView = CCEGLView::sharedOpenGLView();
CCEGLView是窗口,在不同平台上有不同的实现,而CCEGLViewProtocol是CCEGLView定义的接口,所以学习CCEGLView,主要是要学习CCEGLViewProtocol中定义的接口。
通过
pDirector->setOpenGLView(pEGLView);
来初始化,将pDirector“塞进”CCEGLView窗口。