转载请注明出处:http://www.cnblogs.com/zisou/p/cocos2dxJQ-6.html
聊天系统在手机网游中是最常见的交互工具,大家在一起边玩游戏边聊天岂不乐哉;
废话不多了,这里重点只介绍客户端的代码,首先输入框肯定用CCEditBox的了,现在这个最好用;
直接贴已经写好的代码:
首先是ChatInput.cpp这个类,主要就是弹出一个输入框,点击后弹出虚拟键盘输入完成后,点击发送的功能;
ChatInput.h
#include "cocos2d.h" #include "cocos-ext.h" #include "string" using namespace std; USING_NS_CC; USING_NS_CC_EXT; #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS||CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) class ChatInput : public CCLayer, public CCEditBoxDelegate { public: ChatInput(); ~ChatInput(); virtual bool init(); CREATE_FUNC(ChatInput); // 需要重写触摸注册函数,重新给定触摸级别 virtual void registerWithTouchDispatcher(void); // 重写触摸函数,永远返回 true ,屏蔽其它层,达到 “模态” 效果 bool ccTouchBegan(CCTouch *pTouch,CCEvent *pEvent); void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent); // 构架,并设置对话框背景图片 static ChatInput* create(const char* backgroundImage); //添加输入框 void addEditBox(int tag); void addEditBox(int tag,int maxlength); //点击菜单按钮的回调 void buttonCallback(CCObject* pSender); // 为了在显示层时之前的属性生效,选择在 onEnter 里动态展示 virtual void onEnter(); virtual void onExit(); virtual void editBoxEditingDidBegin(cocos2d::extension::CCEditBox* editBox); virtual void editBoxEditingDidEnd(cocos2d::extension::CCEditBox* editBox); virtual void editBoxTextChanged(cocos2d::extension::CCEditBox* editBox, const std::string& text); virtual void editBoxReturn(cocos2d::extension::CCEditBox* editBox); // virtual void keyboardWillShow(cocos2d::CCIMEKeyboardNotificationInfo& info); // virtual void keyboardDidShow(cocos2d::CCIMEKeyboardNotificationInfo& info); // virtual void keyboardWillHide(cocos2d::CCIMEKeyboardNotificationInfo& info); // virtual void keyboardDidHide(cocos2d::CCIMEKeyboardNotificationInfo& info); cocos2d::extension::CCEditBox* m_pEditName; void ShowChangeclass(CCObject *pSender); void toChangeclass(CCObject *pSender); void sendMsg(CCObject *pSender); private: CCSize winSize; void menuToggleCallback(CCObject* pSender); void togai(float togai); // 文字内容两边的空白区 int m_contentPadding; int m_contentPaddingTop; CC_SYNTHESIZE_RETAIN(CCMenu*, m__pMenu, MenuButton); CC_SYNTHESIZE_RETAIN(CCSprite*, m__sfBackGround, SpriteBackGround); CC_SYNTHESIZE_RETAIN(CCScale9Sprite*, m__s9BackGround, Sprite9BackGround); CC_SYNTHESIZE_RETAIN(CCLabelTTF*, m__ltTitle, LabelTitle); CC_SYNTHESIZE_RETAIN(CCLabelTTF*, m__ltContentText, LabelContentText); CC_SYNTHESIZE_RETAIN(CCSprite*, m__sTitle, SpriteTitle); CC_SYNTHESIZE_RETAIN(CCEditBox*, m__pEditBox, EditBox); CCRect thisRect;//弹框的rect CCRect getRect(); }; #endif