void HelloWorld::endScene(EndReason endReason) { if (_gameOver) return; _gameOver = true; //存储分数 setHighestHistorySorce(); gScore = 0; auto winSize = Director::getInstance()->getWinSize(); char message[10] = "You Win"; if (endReason == KENDREASONLOSE) strcpy(message, "You Lose"); LabelBMFont * label; label = LabelBMFont::create(message,"fonts/Arial.fnt"); label->setScale(0.1); label->setPosition(Point(winSize.width / 2, winSize.height*0.6)); this->addChild(label); LabelBMFont * restartLabel; restartLabel = LabelBMFont::create("Restart", "fonts/Arial.fnt"); auto *restartItem = MenuItemLabel::create(restartLabel,CC_CALLBACK_1(HelloWorld::restartTapped,this)); restartItem->setScale(0.1); restartItem->setPosition(Point(winSize.width / 2, winSize.height*0.4)); Menu *menu = Menu::create(restartItem, NULL); menu->setPosition(Point::ZERO); this->addChild(menu); // clear label and menu restartItem->runAction(ScaleTo::create(0.5, 1.0)); label->runAction(ScaleTo::create(0.5, 1.0)); // Terminate update callback this->unscheduleUpdate(); }
void HelloWorld::showRestartMenu() { Size winSize = Director::getInstance()->getWinSize(); const char *message; if (_won) { message = "You win!"; } else { message = "You lose!"; } LabelBMFont *label = LabelBMFont::create(message, "Arial.fnt"); label->setScale(0.1f); label->setPosition(winSize.width / 2, winSize.height * 0.6f); this->addChild(label); LabelBMFont *restartLabel = LabelBMFont::create("Restart", "Arial.fnt"); MenuItemLabel *restartItem = MenuItemLabel::create(restartLabel, [](Object *sender){ Director::getInstance()->replaceScene(TransitionZoomFlipX::create(0.5f, HelloWorld::createScene())); }); restartItem->setScale(0.1f); restartItem->setPosition(winSize.width / 2, winSize.height * 0.4f); Menu *menu = Menu::createWithItem(restartItem); menu->setPosition(Point::ZERO); this->addChild(menu); restartItem->runAction(ScaleTo::create(0.5f, 1.0f)); label->runAction(ScaleTo::create(0.5f, 1.0f)); }