在游戏开发中,为了获得更好的交互效果,经常使用对话框,cocos实现对话框也比较容易,说到底对话框也是一个Layer。我们在添加Layer之前首先对对话框进行一定的设置,之后在Layer的OnEnter方法中对界面进行一个动态的加载,另外我们需要重写OnTouchBegin方法,以屏蔽其他的触摸事件。下面是我实现的一个简单对话框
创建C++类DialogLayer实现对话框界面,头文件如下
#ifndef _DialogLayer_
#define _DialogLayer_
#include "cocos2d.h"
USING_NS_CC;
class DialogLayer :public Layer
{
public:
DialogLayer();
~DialogLayer();
virtual bool init();
CREATE_FUNC(DialogLayer);
//virtual void registerWithTouchDispatcher(void);
bool onTouchBegan(Touch *touch, Event *unused_event);
static DialogLayer * create(const char* backgroundImage);
void setTitle(const char* title ,int fontsize=20);
void setContentText(const char* text ,int fontsize=20 ,int padding=50 ,int paddintTop=100);
void setCallbackFunc(CCObject* target, SEL_CallFuncN callfun);
bool addButton(const char* normalImage, const char* selectedImage, const char* title, int tag=0);
virtual void onEnter();
private:
void buttonCallback(CCObject* pSender);
// 文字内容两边的空白区
int m_contentPadding;
int m_contentPaddingTop;
CCObject* m_callbackListener;
SEL_CallFuncN