Cocos2d-x的警告提示框和加载提示框的实现
来源:互联网 发布:mac iphoto可以删除吗 编辑:程序博客网 时间:2024/06/04 18:46
//MessageManager.h
//
// MessageManager.h
// MyFighter
//
// Created by LeoChen on 13-8-27.
//
//
#ifndef __MyFighter__MessageManager__
#define __MyFighter__MessageManager__
#include "cocos2d.h"
USING_NS_CC;
using namespace std;
enum
{
MESSAGETYPE_LOADING,
MESSAGETYPE_WARNING,
};
class ShadowLayer:public CCLayer
{
public:
CREATE_FUNC(ShadowLayer);
bool init();
virtual bool ccTouchBegan(CCTouch* touch, CCEvent* event);
virtual void onEnter();
virtual void onExit();
};
class MessageManager:public CCObject
{
public:
CREATE_FUNC(MessageManager);
bool init();
void show(CCNode*nodeParent, int type,const char *msg);
void hidden();
void onWarningHidden(CCNode *node);
private:
int m_iType;
ShadowLayer *m_pLayer;
};
#endif /* defined(__MyFighter__MessageManager__) */
// MessageManager.cpp
// MyFighter
//
// Created by LeoChen on 13-8-27.
//
//
#include "MessageManager.h"
bool MessageManager::init()
{
return true;
}
void MessageManager::show(CCNode*nodeParent, int type,const char *msg)
{
m_pLayer =ShadowLayer::create();
CCSize size = CCDirector::sharedDirector()->getWinSize();
m_pLayer->setContentSize(CCSizeMake(size.width, size.height));
//CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(m_pLayer, -999, true);
m_pLayer->setTouchEnabled(true);
switch (type) {
case MESSAGETYPE_LOADING:
{
CCLayerColor *colorLayer = CCLayerColor::create(ccc4(0, 0, 0, 150));
m_pLayer->addChild(colorLayer);
CCSprite *sp = CCSprite::create("0-loading.png");
sp->setPosition(ccp(size.width/2, size.height/2));
sp->runAction(CCRepeatForever::create(CCRotateTo::create(0.5, 720)));
m_pLayer->addChild(sp);
}
break;
case MESSAGETYPE_WARNING:
{
CCSprite *sp = CCSprite::create("0-warning.png");
sp->setPosition(ccp(size.width/2, size.height/2));
sp->runAction(CCSequence::create(CCDelayTime::create(2),CCCallFuncN::create(this, callfuncN_selector(MessageManager::onWarningHidden)),NULL));
m_pLayer->addChild(sp);
CCLabelTTF *tf = CCLabelTTF::create(msg, "Arial", 20);
tf->setDimensions(CCSizeMake(sp->getContentSize().width-20, sp->getContentSize().height-40));
tf->setPosition(ccp(size.width/2, size.height/2));
tf->setVerticalAlignment(kCCVerticalTextAlignmentCenter);
m_pLayer->addChild(tf);
}
break;
default:
break;
}
nodeParent->addChild(m_pLayer,999);
}
void MessageManager::onWarningHidden(CCNode *node)
{
hidden();
}
void MessageManager::hidden()
{
m_pLayer->removeAllChildren();
m_pLayer->removeFromParent();
}
bool ShadowLayer::ccTouchBegan(CCTouch* touch, CCEvent* event){
return true;
}
void ShadowLayer::onEnter(){
CCLayer::onEnter();
CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, -999, true);
}
void ShadowLayer::onExit(){
CCLayer::onExit();
CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this);
}
bool ShadowLayer::init()
{
return true;
}
使用方法:
附件为两张图片
//警告提示
MessageManager::create()->show(this, MESSAGETYPE_WARNING, "名字不能为空"); //两秒后消失
//加载loading
m_pMessage = MessageManager::create();
m_pMessage->show(this ,MESSAGETYPE_LOADING,NULL);//显示
m_pMessage->hidden();//隐藏
//弹窗图片
//loading图片 注意是白色的,所以发表上来看不见。。。右键下载吧
、、、、、、、、、、
- Cocos2d-x的警告提示框和加载提示框的实现
- Cocos2d-x 自制提示框(就是游戏登陆失败之类的提示一下消失效果)
- 提示框的实现
- VS2012关于cocos2d-x的解决方案加载失败(提示:该项目需要用户输入cocos2d加载失败)
- 用户名和密码框提示的实现
- Swift - 警告提示框(UIAlertController)的用法
- QT StandardButton 等提示框 警告栏 的 用法
- 去掉MyEclipse的警告提示
- 去掉VS2005的警告提示
- GCC 警告提示的用法
- memcached 提示警告 的问题
- 关闭Excel提示文件格式和扩展名不匹配的警告框
- 关于cocos2d-x进度条的实现和异步加载资源
- toast提示框的实现
- 页面加载的时候弹出提示框
- C#后台提示警告框
- cocos2d-x提示'__useHeader' : macro redefinition的解决方法
- cocos2d-x提示'__useHeader' : macro redefinition的解决方法
- tomcat部署web项目
- HashSet
- wampserver(php+mysql+phpmyadmin+appache)安装中的错误解决方法
- UVA 674 Coin Change(dp + 完全背包)
- Linux下Android开发连接Android手机进行调试
- Cocos2d-x的警告提示框和加载提示框的实现
- RESTFUL服务中POST/PUT/PATCH方法的区别
- HDU Candy(数学 组合)
- linux kernel map -- 一张非常经典的linux内核地图
- py2exe使用总结
- 正则表达式
- LinkedHashSet类
- SGU 115 Calendar (模拟)
- 安卓刷机及刷机包制作教程