【Cocos2D-X 】初窥门径(12)游戏中的对话框
16lz
2021-01-26
在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
更多相关文章
- Android(安卓)NDK r5 windows系统上安装与使用
- android popupwindow的使用与讲解
- Android(安卓)调用系统相机返回data为null
- getSystemService获得系统服务列表
- Android性能测试工具--Oprofile
- Android版网络办公系统应用客户端+服务端
- Android温故之-Activity
- 基于ubuntu16.04多用户编译android N(android 7.1)系统提示ninja
- android检测新版本并下载安装的方法