获取当前某类的静态实例方法:如下代码,举例类名为: 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); //从游戏当前层上去除相撞子弹
}
}