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__
#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);
}