zoukankan      html  css  js  c++  java
  • 我学cocos2d-x (两) 采用Delegate(信托)

    Delegate(信托)什么

    Delegate是ios开发中的一个概念,主要是为了让类A中的功能,放到类B中来实现,这样能够合理的把功能划分到不同的文件里进行实现,从而更好的实现模块的分离。如UIApplicationDelegate用于处理app启动、进入前台、进入后台等消息。
    从设计模式的角度来看,Delegate属于组合模式,使用低耦合的代码,有利于编写可拓展的程序。


    cocos2d-x怎样实现Delegate
    我们看下怎样在cocos2d-x中使用Delegate的实例。

    1、定义一个接口类StatusDelegate,声明须要实现onGameStart、onGamePlaying、onGameEnd这三个方法:
    class StatusDelegate {
    public :
       
        virtual void onGameStart( void) = 0;
       
        virtual void onGamePlaying( int score) = 0;
       
        virtual void onGameEnd( int curScore, int bestScore) = 0;
       
    };

    2、StatusLayer继承自StatusDelegate,实现onGameStart、onGamePlaying、onGameEnd这三个方法:

    class StatusLayer:public Layer,public StatusDelegate{
         ...
         void onGameStart();
       
         void onGamePlaying( int score);
       
         void onGameEnd( int curScore, int bestScore);
         ...
    }


    3、在GameLayer中加入StatusDelegate变量:
    class GameLayer public Layer{
         ...
         CC_SYNTHESIZE (StatusDelegate *, delegator, Delegator);
         ...
    }
    这里CC_SYNTHESIZE这个宏用于加入StatusDelegate变量
    #define CC_SYNTHESIZE (varType, varName, funName)
    protected : varType varName;
    public virtual varType get##funName( voidconst { return varName; }
    public virtual void set##funName(varType var){ varName = var; }


    4、创建GameLayer时指定Delegate
    auto gameLayer = GameLayer ::create();
    if (gameLayer) {
         gameLayer->setDelegator(statusLayer);

    }

    5、调用Delegate的onGameStart()方法
    if (this ->gameStatus == GAME_STATUS_READY) {
            this->delegator->onGameStart();
            ...
    }


    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    【pywin32总结】
    python 操作 office
    Python操作Word【批量生成文章】
    该怎样用几何画板绘制正五边形呢
    安装ChemOffice 15.1就是这么简单
    MathType编辑钢筋符号就是这么简单
    该如何将MathType公式粘贴到文档中
    修改Chem 3D模型的化学键属性的方法有哪些
    几何画板做圆柱的方法有哪些
    用几何画板如何实现抛物线左右平移
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4913092.html
Copyright © 2011-2022 走看看