Cocos2d-x 3.2 大富翁游戏项目开发-第十七部分 Toast提示框

Cocos2d-x 3.2 大富翁游戏项目开发-第十七部分 Toast提示框,第1张

概述在缴纳过路费时,在角色附近显示减少的资金数,收到过路费的角色显示增加的资金数,效果如图 网上有不少这方面的资料,我拿来稍微修改了一下 写一个CocosToast吐司类 #ifndef __CocosToast_H__#define __CocosToast_H__#include "cocos2d.h"#include "cocos-ext.h"USING_NS_CC;using

在缴纳过路费时,在角色附近显示减少的资金数,收到过路费的角色显示增加的资金数,效果如图



网上有不少这方面的资料,我拿来稍微修改了一下

写一个CocosToast吐司类

#ifndef __CocosToast_H__#define __CocosToast_H__#include "cocos2d.h"#include "cocos-ext.h"USING_NS_CC;using namespace std;class CocosToast :	public Layercolor{public:	CocosToast(voID);	~CocosToast(voID);	static voID createtoast(Node* node,const std::string& msg,const float& time,Vec2 point);	voID removetoast(Node* node);};#endif

#include "CocosToast.h"参数node:添加该Toast  layer的父节点msg:显示的信息time:toast显示的时间长短point:toast显示的位置坐标voID CocosToast::createtoast(cocos2d::Node *node,const std::string &msg,const float &time,Vec2 point){   //创建显示信息的label    auto label = Label::createWithSystemFont(msg.c_str(),"Arial",20);    label->setcolor(color3B::WHITE);    label->ignoreAnchorPointForposition(false);    label->setAnchorPoint(Vec2::ANCHOR_MIDDLE);       //toast的layer层    auto layer = Layercolor::create(color4B(100,100,255));    layer->ignoreAnchorPointForposition(false);    layer->setAnchorPoint(Vec2::ANCHOR_MIDDLE);    layer->setContentSize(label->getContentSize() + Size(20,15));    node->addChild(layer);    node->addChild(label);    layer->setposition(point);    label->setposition(layer->getposition());    //toast显示时的动作,先由下而上,再由上而下,回到point的位置,动作结束时,把toast从父节点清除    auto seq1 = Sequence::create(FadeIn::create(time/5),DelayTime::create(time/5*1.5),FadeOut::create(time/5*2.5),CallFuncN::create(layer,callfuncN_selector(CocosToast::removetoast)),NulL);    auto seq2 = Sequence::create(EaseSineIn::create(MoveBy::create(time/5,Vec2(0,50))),DelayTime::create(time/5*2),EaseSineOut::create(MoveBy::create(time/3,-50))),NulL);    auto spawn = Spawn::create(seq1,seq2,NulL);    auto action = Repeat::create(spawn,1);    layer->setopacity(0);    label->setopacity(0);    layer->runAction(action);    label->runAction(action->clone());}voID CocosToast::removetoast(Node* node){    this->removeFromParentAndCleanup(true);	}CocosToast::CocosToast(voID){}CocosToast::~CocosToast(voID){}

现在修改一下GameBaseScenepayTolls方法


voID GameBaseScene::payTolls(int payTag,float x,float y,int playerTag){…………switch(playerTag){  case PLAYER_1_TAG:  {    int retMoney = displayArea(x,y,player1,player2_building_1_tiledID,player2_building_2_tiledID,player2_building_3_tiledID);    refreshMoneyLabel(landOwner,money + retMoney);    refreshMoneyLabel(player1,-(money + retMoney));   //Toast显示相应角色增加和减少的资金数    CocosToast::createtoast(this,String::createWithFormat("+%d",money + retMoney)->getCString(),TOAST_SHOW_TIME,landOwner->getposition());    CocosToast::createtoast(this,String::createWithFormat("-%d",player1->getposition());   //注意当是第一角色时,延时TOAST_SHOW_TIME秒后发送继续行走消息,避免toast显示过于频繁   scheduleOnce(schedule_selector( GameBaseScene::sendMSGPickOnetoGO),TOAST_SHOW_TIME);	   break;  }  case PLAYER_2_TAG:   {    int retMoney = displayArea(x,player2,player1_building_1_tiledID,player1_building_2_tiledID,player1_building_3_tiledID);    refreshMoneyLabel(landOwner,money + retMoney);    refreshMoneyLabel(player2,-(money + retMoney));    CocosToast::createtoast(this,player2->getposition());    NotificationCenter::getInstance()->postNotification(MSG_PICKONE_TOGO,String::createWithFormat("%d",MSG_PICKONE_TOGO_TAG));    break;  }				}……………….}

点击下载代码


http://download.csdn.net/detail/lIDeguo1979/8334883


未完待续...................

总结

以上是内存溢出为你收集整理的Cocos2d-x 3.2 大富翁游戏项目开发-第十七部分 Toast提示框全部内容,希望文章能够帮你解决Cocos2d-x 3.2 大富翁游戏项目开发-第十七部分 Toast提示框所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1029822.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存