Cocos2d-x CocosBase 场景管理解决方案(2)
获取场景切换时传递的附加参数
getTouchPriority()
获取场景管理器在本场景onEnter时为本场景分配的触摸优先级
Viva为您提供的触摸优先级解决方案,在onLoadScene里初始化所有元素(CCMenu、CCLayer、CWidgetLayout等需要接收触摸事件的对象)
本场景在onEnter时总会得到一个最新的优先级值(最优先的)
所以在onEnter时,来刷新这些元素(CCMenu、CCLayer、CWidgetLayout)的触摸优先级,触摸优先级的值通过getTouchPriority来获得
这样就能保证,本场景在显示时(加入渲染树时),优先级被重置为最优先了。
addImage()
以同步的方式加载图像资源
addImageAsync()
以异步的方式加载图像资源
场景定义介绍
1. CREATE_SCENE_FUNC 这个宏写在每个场景定义的头文件里
2. REGISTER_SCENE_FUNC 用这个宏 通过场景类名来注册场景(一般写在AppDelegate.cpp里)
3. SeekScene 通过场景类名查找场景实例
4. SeekSceneExtra 通过场景类名查找场景实例 并传递参数
通过这样的代码来注册一个场景(一般写在AppDelegate.cpp里)
REGISTER_SCENE_FUNC(LoginScene);
通过这样的代码来运行一个场景
CCDirectorEx::sharedDirector()->runWithScene(SeekScene("LoginScene"));
消息广播机制:
所有CCObject对象均可以通过多继承于CCMessageProtocol接口类来实现接收消息的功能(CCSceneEx默认多继承于CCMessageProtocol)
registerMessageHandler(CCMessageProtocol* pProtocol)
注册一个消息接收器
unregisterMessageHandler(CCMessageProtocol* pProtocol)
取消注册一个消息接收器
通过以下代码来注册消息接收
CCDirectorEx::sharedDirector()->registerMessageHandler(this);
发送消息接口
// 发送消息到所有消息接收器 void PostMessage(unsigned int uMsg, CCObject* pMsgObj = NULL, void* wParam = NULL, void* lParam = NULL); // 发送消息到指定消息接收器 void PostMessage(CCMessageProtocol* pProtocol, unsigned int uMsg, CCObject* pMsgObj = NULL, void* wParam = NULL, void* lParam = NULL);
通过以下代码来发送消息
CCDirectorEx::sharedDirector()->PostMessage(1, pBundle, NULL, NULL);
发送消息的时机可以是任何时间任何地方,发送的消息会在下一帧时进行分发。
另外消息结构中有一个参数pMsgObj,只要保证发送的参数是create出来的(调用过autorelease),即可再也不用理会这个对象的生命周期
其他两个对象指针wParam与lParam,需要自己处理释放等操作。
导演拓展类介绍
CCDirectorEx
end()
退出游戏
getRunningScene()
获取当前运行的基础场景
getRunningPopupScene()
获取当前运行的悬浮场景
removeCachedScenes(const char* pSceneName)
相关新闻>>
- 发表评论
-
- 最新评论 更多>>