在Cocos2D-X中有个CCMessageBox,可以用来创建对话框。

CCMessageBox("this is content","title");

这个在win32和Android上都是通用的,底层都是调用当前系统的对话框,win32效果如下图,在android 上就是调用的系统的Dialog。


对话框虽然简单,不过系统的Dialog不怎么好看,实际开发中一般没人用系统的对话框,一个字,太丑了!我们可以利用CCLayer来自定义一个对话框。

#include "InputWidget.h"InputWidget::InputWidget(){}InputWidget::~InputWidget(){}bool InputWidget::init(){if (!CCLayer::init()) {return false;}mSize=CCDirector::sharedDirector()->getWinSize();mBg= CCSprite::create("DialogBg.png");mBg->setPosition(ccp(mSize.width / 2, mSize.height / 2));this->addChild(mBg);CCLabelTTF* pLabel=CCLabelTTF::create("Are you sure ?","Arial",20);pLabel->setPosition(ccp(mSize.width / 2, mSize.height / 2+40));this->addChild(pLabel);//创建一个输入框CCTextFieldTTF* pTextField=CCTextFieldTTF::textFieldWithPlaceHolder("input","Arial",24);pTextField->setPosition(ccp(mSize.width / 2, mSize.height / 2));pTextField->attachWithIME();this->addChild(pTextField);CCMenuItemImage *pMenuItem = CCMenuItemImage::create("BtnOK.png","BtnOK.png",this,menu_selector(InputWidget::onOK));pMenuItem->setPosition(ccp(mSize.width / 2, mSize.height / 2-40));CCMenu* pMenu = CCMenu::create(pMenuItem,NULL);pMenu->setPosition(CCPointZero);this->addChild(pMenu);return true;}void InputWidget::onOK(CCObject* pSender){this->removeFromParentAndCleanup(true);}

效果图:



效果还是挺不错的,除了素材不好看,,,,PS课程用来补充睡眠了,大家懂的,呵呵,将就着看看吧,

最后还有一个问题,就是如果透明的部分有别的菜单,当我们点击的时候就会发现菜单依然可以点击。对话框还没关闭呢,点别的菜单界面又切换了,这肯定是不行的。

解决办法:屏蔽触摸。

这里给出一个解决方法,就是让Layer吞掉触摸事件。

void InputWidget::registerWithTouchDispatcher(void){  //使用int最小值做最高优先级CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, INT_MIN , true); }  bool InputWidget::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent){  //吞掉触摸事件return true;  }  void InputWidget::ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent){  }  void InputWidget::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent)  {  }  void InputWidget::ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent)  {  } 


这下就可以了,点击试试没有问题。




转载请注明出处:http://blog.csdn.net/Vestigge





更多相关文章

  1. Android(安卓)NDK r5 windows系统上安装与使用
  2. android popupwindow的使用与讲解
  3. Android(安卓)调用系统相机返回data为null
  4. getSystemService获得系统服务列表
  5. Android性能测试工具--Oprofile
  6. Android版网络办公系统应用客户端+服务端
  7. Android温故之-Activity
  8. 基于ubuntu16.04多用户编译android N(android 7.1)系统提示ninja
  9. android检测新版本并下载安装的方法

随机推荐

  1. android 6.0编译时出现ERROR:Security pro
  2. android 键盘关闭/显示
  3. android 服务器与客户端
  4. Windows环境下搭建Cocos2dx的android开发
  5. Android三种实现定时器的方法
  6. android dialog 背景透明的样式
  7. SurfaceView设置透明效果
  8. android的listView中设置line
  9. Android SDK Manager不能显示所有包的解
  10. android 设置 dialog位置