zoukankan      html  css  js  c++  java
  • cocos2dx 分享某类的静态实例方法与调用

    获取当前某类的静态实例方法:如下代码,举例类名为:  PlayScene
    在 .h 文件中声明:
    class PlayScene : public CCLayer
    {
    public:
        //获取当前PlayScene的静态实例(分享)
        static PlayScene* sharedPlay();
        static CCScene* createPlayScene();
        virtual bool init();
        CREATE_FUNC(PlayScene);
    
    };
    在 .cpp 文件中定义:
    #include "PlayScene.h"
    static PlayScene* ps;
    
    PlayScene* PlayScene::sharedPlay()
    {
        if(ps)
        {
            return ps;
        }
        return NULL;
    }
    
    CCScene* PlayScene::createPlayScene()
    {
        CCScene* scene = CCScene::create();
        PlayScene* layer = PlayScene::create();
        scene->addChild(layer);
        return scene;
    }
    
    bool PlayScene::init()
    {
        if(!CCLayer::init())
        {
            return false;
        }
        ps = this;
    }
    调用举例:
        //游戏主角子弹与怪物的碰撞检测,当发生碰撞时当从游戏中去除相碰撞的子弹与怪物
        //getEemyArray()为定义在PlayScene类中得到怪物数组的函数,
        for(int i = 0; i < PlayScene::sharedPlay()->getEnemyArray()->count(); i ++)
        {
            Enemy* enemy = (Enemy*) PlayScene::sharedPlay()->getEnemyArray()->objectAtIndex(i);
            if(this->boundingBox().intersectsRect(enemy->boundingBox()))
            {
                PlayScene::sharedPlay()->getEnemyArray()->removeObject(enemy); //从怪物数组中去除对象
                PlayScene::sharedPlay()->removeChild(enemy, true); //从游戏的当前层上去除相撞怪物
                PlayScene::sharedPlay()->removeChild(this, true); //从游戏当前层上去除相撞子弹
            }
        }
  • 相关阅读:
    Python元组、列表、字典
    测试通过Word直接发布博文
    Python环境搭建(windows)
    hdu 4003 Find Metal Mineral 树形DP
    poj 1986 Distance Queries LCA
    poj 1470 Closest Common Ancestors LCA
    poj 1330 Nearest Common Ancestors LCA
    hdu 3046 Pleasant sheep and big big wolf 最小割
    poj 3281 Dining 最大流
    zoj 2760 How Many Shortest Path 最大流
  • 原文地址:https://www.cnblogs.com/jiackyan/p/3042588.html
Copyright © 2011-2022 走看看