转载请注明出处: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
View Code

相关文章:

  • 2021-12-25
  • 2021-08-23
  • 2021-10-21
  • 2021-09-22
  • 2021-09-12
  • 2021-09-16
  • 2022-12-23
  • 2021-12-04
猜你喜欢
  • 2021-12-25
  • 2021-12-13
  • 2021-06-17
  • 2021-11-12
  • 2021-12-14
  • 2021-11-11
  • 2022-01-13
相关资源
相似解决方案