有些技巧你不知道不要紧,但知道后会很牛逼。
-------------------
假如我们游戏场景中有两个层,一个是游戏层,一个是状态层。游戏层就是控制游戏中角色的移动(为了简便说明,我自动忽视了控制层),状态曾就是当提示游戏状态,当游戏开始时显示“game start”几个字,当游戏结束时显示“game over”。那么,该怎么实现游戏层与状态层间的通信呢?
有的人马上说:用单例啊,在状态层写一个单例,这样游戏层随时都可以调用。没错,单例确实可以解决层之间的通信,但我在第二篇里也有说过, 单例这东西能不用就不用,太浪费空间。
下面介绍另一种方法: delegate(委托)
-------------------
假如我们游戏场景中有两个层,一个是游戏层,一个是状态层。游戏层就是控制游戏中角色的移动(为了简便说明,我自动忽视了控制层),状态曾就是当提示游戏状态,当游戏开始时显示“game start”几个字,当游戏结束时显示“game over”。那么,该怎么实现游戏层与状态层间的通信呢?
有的人马上说:用单例啊,在状态层写一个单例,这样游戏层随时都可以调用。没错,单例确实可以解决层之间的通信,但我在第二篇里也有说过, 单例这东西能不用就不用,太浪费空间。
下面介绍另一种方法: delegate(委托)
首先我建立一个委托的基类
class MyDelegate
{
public:
virtual void onGameStart(void) = 0;//创建游戏开始的虚函数
virtual void onGameEnd(void) = 0;//创建游戏结束时的虚函数
};
下面创建一个GameLayer(游戏层)
class GameLayer : public cocos2d::Layer
{
public:
static cocos2d::Scene* createScene();
virtual bool init();
CREATE_FUNC(GameLayer);
CC_SYNTHESIZ

本文以寓言故事的形式介绍了Cocos2dx中如何使用委托(delegate)机制,通过创建StatusDelegate基类,及其子类StatusLayer和GameLayer的互动,阐述了委托在游戏开发中的应用。故事中,GameLayer为了获取如同StatusDelegate般的读心术,即理解其他层的状态,必须遵循特定的规则,这与委托的工作原理相呼应。
delegate委托&spm=1001.2101.3001.5002&articleId=22829039&d=1&t=3&u=a59db8cf0a0c41fcba81813089ab98ef)
621

被折叠的 条评论
为什么被折叠?



