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);


原文地址:https://www.cnblogs.com/Anzhongliu/p/6091804.html