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



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

写一个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提示框的更多相关文章

  1. 详解iOS游戏开发中Cocos2D的坐标位置关系

    这篇文章主要介绍了iOS游戏开发中Cocos2D的坐标位置关系,Cocos2D是专门用来开发iOS游戏的开源框架,文中示例代码采用Objective-C语言,需要的朋友可以参考下

  2. 剖析iOS开发中Cocos2d-x的内存管理相关操作

    这篇文章主要介绍了剖析iOS开发中Cocos2d-x的内存管理相关操作,Cocos2d-x是开发游戏的利器,需要的朋友可以参考下

  3. iOS开发中使用cocos2d添加触摸事件的方法

    这篇文章主要介绍了iOS开发中使用cocos2d添加触摸事件的方法,cocos2d是制作iOS游戏的利器,需要的朋友可以参考下

  4. ios – cocos2d 2.0-rc2:结束导演并重启

    我有一个使用UIKitmenues的cocos2d驱动游戏,所以我只使用一个viewcontroller的框架,这是游戏本身.此外,它只有一个场景.由于cocos2d2.0导演本身是一个UIViewController子类,所以我只需在用户点击一个开始按钮时将其推送到我的MenuViewController中:当用户启动第一个游戏时,第一次调用该方法时,这很好.当游戏结束时,我调用[[CCDire

  5. cocos2d 基本知识

    1.DrawNodedrawRect全屏:pad:460,320.iphone:400,3002.cocos2d-x-3.13.1&ios10.1:不设置position,ios模拟器屏幕上就看不到了3.cocos2d-xconsole生成初始项目:~/Desktop/cocos2d-x-3.13.1/tools/cocos2d-console/bin/cocosnewHelloMath-lcpp

  6. cocos2d随机数

    srand;intn=rand()%100+1;//生成1-100之间的随机数,包括100

  7. Cocos2d 2.0将UIView添加到CClayer openglview已弃用

    我有一些麻烦添加一个UIView到cocos2dv2.0,因为openGlView已被弃用,我无法添加视图.我在寻找另外一种方法来做到这一点,但是找不到任何东西.任何人都可以告诉我在所有cc层之前添加一个UIView的新方法?或者我该如何完成这个?使用这个而不是openGLView:

  8. cocos2d-x-3.3rc0事件处理

    1.头文件2.代码

  9. 一张图了解cocos2d坐标系

    一张图了解cocos2d坐标系平面直角坐标系

  10. cocos2d clippindNode,新手引导

    需要明确的一点就是CcclippingNode本质上是一个节点,什么是节点,节点就是可以存放东西,它也可以放到其他的节点上。还有就是如果用户没有按照要求点击的话,CcclippingNode的模板应该回到上一步的位置处才对,这里没有实现,不过项目中用的时候就需要根据你自己的需要去做了,这里只是为了说明原理。

随机推荐

  1. 【cocos2d-x 3.x 学习笔记】对象内存管理

    Cocos2d-x的内存管理cocos2d-x中使用的是上面的引用计数来管理内存,但是又增加了一些自己的特色。cocos2d-x中通过Ref类来实现引用计数,所有需要实现内存自动回收的类都应该继承自Ref类。下面是Ref类的定义:在cocos2d-x中创建对象通常有两种方式:这两中方式的差异可以参见我另一篇博文“对象创建方式讨论”。在cocos2d-x中提倡使用第二种方式,为了避免误用第一种方式,一般将构造函数设为protected或private。参考资料:[1]cocos2d-x高级开发教程2.3节[

  2. 利用cocos2dx 3.2开发消灭星星六如何在cocos2dx中显示中文

    由于编码的不同,在cocos2dx中的Label控件中如果放入中文字,往往会出现乱码。为了方便使用,我把这个从文档中获取中文字的方法放在一个头文件里面Chinese.h这里的tex_vec是cocos2dx提供的一个保存文档内容的一个容器。这里给出ChineseWords,xml的格式再看看ChineseWord的实现Chinese.cpp就这样,以后在需要用到中文字的地方,就先include这个头文件然后调用ChineseWord函数,获取一串中文字符串。

  3. 利用cocos2dx 3.2开发消灭星星七关于星星的算法

    在前面,我们已经在GameLayer中利用随机数初始化了一个StarMatrix,如果还不知道怎么创建星星矩阵请回去看看而且我们也讲了整个游戏的触摸事件的派发了。

  4. cocos2dx3.x 新手打包APK注意事项!

    这个在编译的时候就可以发现了比较好弄这只是我遇到的,其他的以后遇到再补充吧。。。以前被这两个问题坑了好久

  5. 利用cocos2dx 3.2开发消灭星星八游戏的结束判断与数据控制

    如果你看完之前的,那么你基本已经拥有一个消灭星星游戏的雏形。开始把剩下的两两互不相连的星星消去。那么如何判断是GameOver还是进入下一关呢。。其实游戏数据贯穿整个游戏,包括星星消除的时候要加到获得分数上,消去剩下两两不相连的星星的时候的加分政策等,因此如果前面没有做这一块的,最好回去搞一搞。

  6. 利用cocos2dx 3.2开发消灭星星九为游戏添加一些特效

    needClear是一个flag,当游戏判断不能再继续后,这个flag变为true,开始消除剩下的星星clearSumTime是一个累加器ONE_CLEAR_TIME就是每颗星星消除的时间2.连击加分信息一般消除一次星星都会有连击信息和加多少分的信息。其实这些combo标签就是一张图片,也是通过控制其属性或者runAction来实现。源码ComboEffect.hComboEffect.cpp4.消除星星粒子效果消除星星时,为了实现星星爆裂散落的效果,使用了cocos2d提供的粒子特效引擎对于粒子特效不了

  7. 02 Cocos2D-x引擎win7环境搭建及创建项目

    官网有搭建的文章,直接转载记录。环境搭建:本文介绍如何搭建Cocos2d-x3.2版本的开发环境。项目创建:一、通过命令创建项目前面搭建好环境后,怎样创建自己的Cocos2d-x项目呢?先来看看Cocos2d-x3.2的目录吧这就是Cocos2d-x3.2的目录。输入cocosnew项目名–p包名–lcpp–d路径回车就创建成功了例如:成功后,找到这个项目打开proj.win32目录下的Hello.slnF5成功了。

  8. 利用cocos2dx 3.2开发消灭星星十为游戏添加音效项目源码分享

    一个游戏,声音也是非常的重要,其实cocos2dx里面的简单音效引擎的使用是非常简单的。我这里只不过是用一个类对所有的音效进行管理罢了。Audio.hAudio.cpp好了,本系列教程到此结束,第一次写教程如有不对请见谅或指教,谢谢大家。最后附上整个项目的源代码点击打开链接

  9. 03 Helloworld

    程序都有一个入口点,在C++就是main函数了,打开main.cpp,代码如下:123456789101112131415161718#include"main.h"#include"AppDelegate.h"#include"cocos2d.h"USING_NS_CC;intAPIENTRY_tWinMain{UNREFERENCED_ParaMETER;UNREFERENCED_ParaMETER;//createtheapplicationinstanceAppDelegateapp;return

  10. MenuItemImage*图标菜单创建注意事项

    学习cocos2dx,看的是cocos2d-x3.x手游开发实例详解,这本书错误一大把,本着探索求知勇于发现错误改正错误的精神,我跟着书上的例子一起调试,当学习到场景切换这个小节的时候,出了个错误,卡了我好几个小时。

返回
顶部