充分利用C++11特性,Cocos2dx对话框的实现

  次阅读 来源:互联网(转载协议) 2015-09-27 14:58 我要评论(0)

一般一个对话框会分为模态对话框和非模态对话框两种,模态对话框是指在用户想要对对话框以外的应用程序进行操作时,必须首先对该对话框进行响应。如单击【确定】或【取消】按钮等将该对话框关闭。非模态(Modeless)对话框,又叫做无模式对话框,当用户打开非模态对话框时,依然可以操作其他窗口。例如,Windows提供的记事本程序中的【查找】对话框。(抄自百度百科)

目前我需要的一个对话框功能列表如下:

1.需要显示一段提示信息,可能是一段对话可能是一个问题。

2.必须有确认按钮,可能会有取消按钮

3.确认按钮的功能可自定义

下面是我的实现思路。

1.首先有一个初始化对话框的函数,将对话框初始化到内存中,因为对话框是一个很常用的功能,所以直接加入内存中就好了。

2.然后对话框需要载入功能和移除功能,这两样就是对话框的核心功能了

3.对话框需要按钮回调,一个是确认,一个是取消,确认可能还需要执行某些其他功能,我们可以用回调来实现,取消就直接关闭对话框,没什么好说的。

4.对话框分模态和非模态两种,模态就是在对话框层中加一个触摸屏蔽。

遵循着上面的思路,我对于对话框的函数设计如下:

//对话框

protected:

//初始化对话框

void InitDialog();

/* 加载对话框

* @parm:msg 消息 显示在界面上的提示消息

* @parm:fun 回调函数 给确定按钮调用的

* @parm:isNeedCancel 是否需要取消按钮

* @parm:isModalDialog 是否是模态对话框

*/

void LoadDialog(std::string msg,std::functionfun,bool isNeedCancel = false,bool isModalDialog = true);

//对话框加载完成

void LoadDialogFinish(Armature *a, MovementEventType b, std::string c);

//隐藏对话框

void HideDialog();

//隐藏对话框完成

void HideDialogFinish(Armature *a, MovementEventType b, std::string c);

//对话框取消按钮回调

void PressDialogCancelBtn(Ref *pSender, Widget::TouchEventType type);

//对话框确认按钮回调

void PressDialogConfirmBtn(Ref *pSender, Widget::TouchEventType type);

为什么会有对话框加载完成和对话框隐藏完成呢?是因为我把对话框的加载和隐藏做成了两个动画,所以需要这两个附加的函数。

OK 不多说,下面是函数的具体实现:

//----------------------------------------------------------对话框-------------------------------------------------------

//初始化对话框

void MomoScene::InitDialog()

{

ArmatureDataManager::getInstance()->addArmatureFileInfo("publish/DialogAnimation.ExportJson");

Dialog = Armature::create("DialogAnimation");

Dialog->retain();

Dialog->setPosition(getCenterPoint());

m_UI_Dialog->addChild(Dialog);

Dialog->setVisible(false);

//加载信息

m_DialogMsg = Label::create();

m_DialogMsg->retain();

m_DialogMsg->setVisible(false);

本站部分文章来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • Oculus公布原型机,大幅度提升可视角,能实现140°的视场水平

    Oculus公布原型机,大幅度提升可视角,能实现140°的视场水平

  • Michael I. Jordan带你解读百万奖金ATEC蚂蚁人工智能大赛

    Michael I. Jordan带你解读百万奖金ATEC蚂蚁人工智能大赛

  • teamLab创始人猪子寿之: 抛去衣食住行,我还剩下什么?

    teamLab创始人猪子寿之: 抛去衣食住行,我还剩下什么?

  • 2018深圳国际人工智能展览会 2018 shenzhen International Artif

    2018深圳国际人工智能展览会 2018 shenzhen International Artif

网友点评网友点评
阅读推荐阅读推荐

据外媒报道,STEER打造了首款完全自动驾驶停车技术,旨在使常规车辆转变为无人驾驶车辆。STEER的首款技术应用是4级自动驾驶及网络安全停车...

近日,美国软性机器抓手制造商 Soft Robotics 宣布,获得 2000 万美元的融资,本轮投资者包括 Scale Venture Partners,Calibrate Ventures...

据外媒报道,加州车管局发布了《2017自动驾驶脱离报告(California Autonomous Vehicle Disengagement Reports)》,其中谈及了脱离的具体...

用人机语音交互,来解决智能家居适老的问题;通过家庭门禁与安防套件、空气净化套件、可燃气体与有害气体监控套件等相互联动,在不同生活情...