PopupLayer.h

#include "cocos2d.h"
#include "cocos-ext.h"
USING_NS_CC;
USING_NS_CC_EXT;

class PopupLayer : public CCLayer{
public:
    PopupLayer();
    ~PopupLayer();
    virtual bool init();

    //需要重写触摸注册函数,重新给定触摸级别
    virtual void registerWithTouchDispatcher();
    //重写触摸函数,返回true,屏蔽其它层,达到“模态”效果
    bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);

    //静态创建函数,创建一个弹出层,设置背景图片
    static PopupLayer* create(const char* backgroundImage);

    //设置标题
    void setTitle(const char* title, int fontsize = 20);
        //设置文本内容,padding 为文字到对话框两边预留的距离,这是可控的,距上方的距离亦是如此
    void setContentText(const char* text, int fontsize=20, int padding=50, int paddingTop=100);

    //设置上层对象和上层回调函数,用于回调时传递CCNode参数
    void setCallBackFunc(CCObject* target, SEL_CallFuncN callfun);

    //添加menuItem按钮,封装了一个函数,传入些必要的参数
    bool addButton(const char* normalImage, const char* selectedImage, const char* title, int tag=0);

    //为了在显示层时的属性生效,选择在onEnter里动态生成
    virtual void onEnter();
    virtual void onExit();

    CREATE_FUNC(PopupLayer);

private:
    void buttonCallBack(CCObject* pSender);

    //文字内容两边的空白区域
    int m_contentPadding;
    int m_contentPaddingTop;
    CCObject* m_callbackListener;
    SEL_CallFuncN m_callback;
    //定义了CCMenu*类型变量m_pMenu, 并且直接定义默认的set/get方法
    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);
};
View Code

相关文章:

  • 2021-06-09
  • 2022-12-23
  • 2021-07-21
  • 2021-08-18
  • 2022-02-22
  • 2022-02-21
  • 2021-11-03
  • 2021-12-25
猜你喜欢
  • 2022-12-23
  • 2021-04-05
  • 2022-12-23
  • 2022-01-26
  • 2022-12-23
  • 2022-01-09
  • 2022-01-06
相关资源
相似解决方案