cocos设计模式委托实践

来源:互联网 发布:linux内核剖析 编辑:程序博客网 时间:2024/05/17 22:04
不说上代码---headclass MyDelegate{public:virtual void onGameStart(void) = 0;virtual void onGameEnd(void) = 0;protected:private:};class GameLayer : public cocos2d::Layer{public:static cocos2d::Scene* scene();virtual bool init();CREATE_FUNC(GameLayer);CC_SYNTHESIZE(MyDelegate*, delegator, Delegator);/*CC_SYNTHESIZE = protected:  MyDelegate* delegate;  public:  virtual MyDelegate* getDelegator(void) const { return delegate};  virtual void setDelegator(MyDelegate* dele) { delegate = dele}; */};class StatusLayer : public cocos2d::Layer, public MyDelegate{public:virtual bool init();CREATE_FUNC(StatusLayer);void onGameStart() override;void onGameEnd() override;protected:private:};---cpp//---------------------------------------------------------------------bool StatusLayer::init(){if ( !Layer::init() ){return false;}return true;}void StatusLayer::onGameStart(){CCLOG("GAME START ON STATUSLAYER");auto scene = HelloWorld::scene();//Director::getInstance()->runWithScene(scene);//Director::getInstance()->runWithScene(scene);}void StatusLayer::onGameEnd(){CCLOG("GAME OVER ON STATUSLAYER");}//cocos2d::Scene* GameLayer::createScene()//{// auto scene = cocos2d::Scene::create();// GameLayer* layer = GameLayer::create();// scene->addChild(layer);// return scene;//}Scene* GameLayer::scene(){auto scene = Scene::create();GameLayer* layer = GameLayer::create();scene->addChild(layer);return scene;}bool GameLayer::init(){if ( !Layer::init() ){return false;}//auto scene = HelloWorld::scene();////Director::getInstance()->runWithScene(scene);//Director::getInstance()->replaceScene(scene);StatusLayer* status_layer = StatusLayer::create();this->setDelegator(status_layer);this->delegator->onGameStart();this->delegator->onGameEnd();return true;}

0 0
原创粉丝点击