toast提示框的实现
Toast.h文件
#ifndef Toast_h__ #define Toast_h__ #include "cocos2d.h" #include "cocos-ext.h" #include "ui/CocosGUI.h" USING_NS_CC; USING_NS_CC_EXT; using namespace ui; class Toast : public LayerColor { public: static void makeText(Node* node,const std::string& msg,const float& time);//静态函数,方便类直接调用 void removeToast(Node* node); }; #endif // XYToast_h__
Toast.cpp文件
#include "Toast.h" void Toast::makeText(cocos2d::Node *node, const std::string &msg, const float &time) { Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); auto pLabel = Label::createWithSystemFont(msg.c_str(), "Arial", 30); pLabel->setColor(Color3B::WHITE); pLabel->ignoreAnchorPointForPosition(false); pLabel->setAnchorPoint(Vec2::ANCHOR_MIDDLE); auto ly = LayerColor::create(Color4B(130, 120, 120, 255)); ly->ignoreAnchorPointForPosition(false); ly->setAnchorPoint(Vec2::ANCHOR_MIDDLE); ly->setContentSize(pLabel->getContentSize() + Size(20, 15)); node->addChild(ly); node->addChild(pLabel); //ly->setPosition(Vec2(visibleSize.width / 2, -pLabel->getContentSize().height)); ly->setPosition(Vec2(visibleSize.width / 2, visibleSize.height / 2+100)); pLabel->setPosition(ly->getPosition()); //auto seq1 = Sequence::create(FadeIn::create(time / 5), DelayTime::create(time / 5 * 1.5), FadeOut::create(time / 5 * 2.5), CallFuncN::create(ly, callfuncN_selector(PacToast::removeToast)), nullptr); //auto seq2 = Sequence::create(EaseSineIn::create(MoveBy::create(time / 5, Vec2(0, 200))), DelayTime::create(time / 5 * 2), EaseSineOut::create(MoveBy::create(time / 3, Vec2(0, -200))), nullptr); auto seq1=CCSequence::create(CCFadeIn::create(time / 5), CCDelayTime::create(time / 5 * 3), CCFadeOut::create(time / 5), CallFuncN::create(ly, callfuncN_selector(Toast::removeToast)), nullptr); auto spawn = Spawn::create(seq1, nullptr); auto action = Repeat::create(spawn, 1); ly->setOpacity(0); pLabel->setOpacity(0); ly->runAction(action); pLabel->runAction(action->clone()); } void Toast::removeToast(Node* node) { log("node = %s", node->getDescription().c_str()); this->removeFromParentAndCleanup(true); }
调用代码:Toast::makeText(this, "Toast!", 2.5f);