COCOS2DX 3.2 实现模态对话框
来源:互联网 发布:windows教育版 编辑:程序博客网 时间:2024/06/05 10:20
模态对话框(Modal Dialogue Box,又叫做模态对话框),是指在用户想要对对话框以外的应用程序进行操作时,必须首先对该对话框进行响应。
在cocos2dx 3.x版本中,触摸机制有了很多改变,可以参考这篇文章http://www.tuicool.com/articles/Rjim6z。
我的实现方法是,重新创建一个layer当做对话框,使用setSwallowTouches(true)来屏蔽下面的layer的触摸。创建layer时使用LayerColor::initWithColor(Color4B(25,25,25,125));使背景变暗,auto action = ScaleTo::create(0.1, 1);实现对话框缩放动画。具体代码:
.CPP
#include "EndLayer.h"
USING_NS_CC;
Scene* EndLayer::createScene(){
auto s = Scene::create();
auto l = EndLayer::create();
s->addChild(l);
return s;
}
bool EndLayer::init()
{
LayerColor::initWithColor(Color4B(25,25,25,125));
auto visibleSize = Director::getInstance()->getVisibleSize();
auto sp = Sprite::create("closeButton.png");
sp->setPosition(visibleSize.width / 2, visibleSize.height/2);
sp->setScale(0.3);
auto action = ScaleTo::create(0.1, 1);
sp->runAction(action);
//auto menuItem1 = MenuItemFont::create("Yes", CC_CALLBACK_1(EndLayer::yesCallBack,this));
//auto menuItem2 = MenuItemFont::create("No", CC_CALLBACK_1(EndLayer::noCallBack,this));
auto menuItem1 = MenuItemImage::create("close_yes.png", "close_yes.png", CC_CALLBACK_1(EndLayer::yesCallBack, this));
auto menuItem2 = MenuItemImage::create("close_no.png", "close_no.png", CC_CALLBACK_1(EndLayer::noCallBack, this));
auto menu = Menu::create(menuItem1, menuItem2, NULL);
menu->alignItemsHorizontallyWithPadding(50);
//menu->setPosition(visibleSize.width / 2, visibleSize.height / 2 - 300);
//menu->setPosition(visibleSize.width / 2, 35);
menu->setPosition(sp->getContentSize().width/2, sp->getContentSize().height*0.2);
sp->addChild(menu);
addChild(sp);
//ÆÁ±Îϲ㴥Ãþ
auto listener = EventListenerTouchOneByOne::create();
listener->onTouchBegan = [=](Touch* t,Event* e){
return true;
};
listener->setSwallowTouches(true);
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);
return true;
}
void EndLayer::yesCallBack(Ref* r)
{
Director::getInstance()->end();
}
void EndLayer::noCallBack(Ref* r)
{
this->removeFromParent();
}
在游戏的其他回调函数中如下调用即可:
//退出游戏按钮回调函数
void GameStart::menuCloseCallback(Ref* pSender)
{
auto endLayer = EndLayer::createScene();
this->addChild(endLayer);
}
- COCOS2DX 3.2 实现模态对话框
- cocos2dx 弹出式模态对话框的实现与封装
- Cocos2dx 3.13 “模态对话框”的一种实现方式
- cocos2dx 3.x 模态对话框实现中易出现问题解决方法
- Cocos2dx: 弹出对话框的设计与实现
- Cocos2dx: 弹出对话框的设计与实现
- 【COCOS2DX-游戏开发之二】 模态对话框
- cocos2d-x 3.2 实现模态对话框
- JavaScript实现模态对话框
- iOS实现模态对话框
- JavaScript实现模态对话框
- 充分利用C++11特性,Cocos2dx对话框的实现
- 充分利用C++11特性,Cocos2dx对话框的实现【续】
- cocos2dx 弹出 android 对话框
- JavaScript+div实现模态对话框
- JavaScript 实现模态对话框 源代码大全
- symbian下实现自定义模态对话框
- js实现的简单模态对话框
- Android 信号处理面面观 之 trace 文件含义
- iOS 判断网络类型(3G,4G,Wi-Fi)
- iOS开发UI篇—使用storyboard创建导航控制器以及控制器的生命周期
- Win7无线配置工具VC++(Soft-Ap,Wifi,无线承载网络,ICS,Wifi)
- Spring+Freemarker实现自定义方法
- COCOS2DX 3.2 实现模态对话框
- Binary Classification的另两种models
- 修改openssh源代码,添加操作记录审记功能
- Master内使用FindControl找不到控件的解决方案
- Mozilla Firefox Web Browser火狐浏览器安装一直处于“正在检测下载文件的完整性”
- POI导出Word插入复选框
- Bag标签之把字符串分割成数组,返回一个存放数组数据的书包(Bag)
- 修改VS2008中文字体
- iOS笔记之_C语言流程控制