CCDirector

本文详细介绍了Cocos2d-x游戏引擎中的CCDirector类的作用及常用方法。CCDirector负责初始化OpenGLES并控制不同场景间的转换,是游戏场景切换的核心。文章还提供了如何使用这些方法进行场景管理的具体示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CCDirector类负责初始化OpenGL ES和控制scenes之间的转换。CCDirector类是单例的,它以栈的方式处理scenes的调用,并且知道当前哪个scene是激活状态。
 CCDirector主要负责当前窗口的内容,并且负责场景的切换和管理,它同时还还负责:
  1. OpenGL中上下文的初始化(当然这在XNA中很多东西没有了)
  2. 设置投影方式,默认为3D透视投影
  3. 设置屏幕方向
  4. 它是一个单实例
  5. 设置着色器一些通用参数


//获取设备的宽高

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


在实际的游戏开发中,当很多地方都要用到某个场景时,比如设置游戏音效和音量的场景,pushScene和popScene方法就非常有用。我们可以单击Setting,调用pushScene进入设置场景,然后在设置场景中单击Back按钮调用popScene,游戏就会返回上一个状态。无论是在主菜单、游戏场景或其他地方打开设置菜单,popScene方法都会正常工作,无需随时记录设置菜单的状态。


//将UIKit坐标系中的坐标转换为OpenGLES坐标系中的坐标。
//下面的代码获取了触摸点的坐标,并将其转换成Cocos2D可以使用的坐标。该方法通常用于转换多点触摸点的坐标。
UITouch *myTouch = [touches anyObject];
CGPoint location = [myTouch locationInView:[myTouch view]];
location = [[CCDirector sharedDirector] convertToGL:location]; 



//将OpenGLES坐标系中的坐标转换为UIKit坐标系中的坐标。该方法通常用于将节点转换为窗口中的点,以便调用如glScissor之类的命令。
//虽然Cocos2D的功能很强大,但有时在游戏中也需要使用UIKit的元素,比如使用虚拟键盘输入玩家的昵称等,这时就需要使用该方法将Cocos2D中的坐标转换为UIKit中的坐标。
textField.center = [[CCDirector sharedDirector] convertToUI:ccp(240, 250)];


//清除所有自动缓存的Cocos2D数据。
//该方法将会清除CCTextureCache和CCLabelBMFont中的缓存。但CCSpriteFrameCache中的缓存不会被清除,需要手动清除。
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {  
 [[CCDirector sharedDirector] purgeCachedData];  


//启用或禁用OpenGLES的Alpha(透明)混合处理。
[[CCDirector sharedDirector]setAlphaBlending:YES]; 

//启用或禁用OpenGLES的位深测试。
[[CCDirector sharedDirector]setDepthTest:YES]; 

//获取导演对象的单例
CCDirector *director = [CCDirector sharedDirector]; 

//停止动画,屏幕上将不会绘制东西。示例代码如下:
[[CCdirector sharedDirector] stopAnimation]; 

isPaused:CCDirector是否被暂停。变量类型为BOOL。

sendCleanupToScene:判断被替换的场景是否收到cleanup(清除)消息。如果新场景是弹出的,原来的场景不会收到清除消息;如果新场景会直接替代旧场景,则原来的场景会收到清除消息。变量类型为BOOL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值