1.保证相同的生命周期
还有就是runAction()方法 加入一个延迟
- bool GameOverLayer::init()
- {
- if (CCLayerColor::initWithColor(ccc4(0, 255, 0, 255))){
- _label = CCLabelTTF::create("word", "Artial", 40);
- CCSize size = CCDirector::sharedDirector()->getVisibleSize();
- _label->setPosition(ccp(size.width / 2, size.height / 2));
- this->addChild(_label);
- _label->retain(); //保证_label 跟类对象有同样的生命周期
写完了这句后同样需要的析构函数中释放它,因为是手动retain()的也必须手动进行释放。
2.if(1==tag){
_targets->removeObject(who);
CCScene*overScene=GameOverLayer::scene(); //先取得场景
GameOverLayer*overLayer=(GameOverLayer*)overScene->getChildByTag(100); //取得tag=100的层,当然设置层的时候添加了SetTag(100)
overLayer->_label->setString("man,you rock");
CCDirector::sharedDirector()->replaceScene(OverScene);
//如果打的怪物数量超过5个则也失败。。
在碰撞检查位置上加上如下代码
if(_successCount++>5){
CCScene*overScene=GameOverLayer::scene(); //先取得场景
GameOverLayer*overLayer=(GameOverLayer*)overScene->getChildByTag(100); //取得tag=100的层,当然设置层的时候添加了SetTag(100)
overLayer->_label->setString("man,you rock");
CCDirector::sharedDirector()->replaceScene(OverScene);
}
还有就是runAction()方法 加入一个延迟
- CCDelayTime* delay = CCDelayTime::create(5); // 执行一个延时动作
- CCCallFuncN* returnToGame = CCCallFuncN::create(this, callfuncN_selector(GameOverLayer::returnToGame));
- this->runAction(CCSequence::create(delay, returnToGame, NULL));