The Code is as follows:
# Include <iostream> # include "knet_typedef.h" # include "cocos2d. H "# include" cocos-ext.h "using_ns_cc; using_ns_cc_ext; # include" clientdefine. H "# include" ttbutton. H "using namespace STD; extern class ttbutton; struct msgboxbinit {public: msgboxbinit () {m_target = NULL; m_okhandle = NULL; m_cancelhandle = NULL;} STD: String m_strtitle; STD:: String m_strtext; ccnode * m_target; sel_callfunco m_okhandle; se L_callfunco m_cancelhandle;}; Class ttmsgboxb: Public cclayer {public: ttmsgboxb ();~ Ttmsgboxb (); create_func (ttmsgboxb) virtual bool Init (); Virtual void onenter (); Virtual void onexit (); Virtual bool cctouchbegan (cctouch * ptouch, ccevent * pevent ); virtual void cctouchmoved (cctouch * ptouch, ccevent * pevent); Virtual void cctouchended (cctouch * ptouch, ccevent * pevent); Virtual void Merge (cctouch * ptouch, ccevent * pevent ); void Merge (ccobject * pobj); void onokbtnclick (ccobject * pobj); void Merge (ccobject * pobj); msgboxbinit getinitstruct (); Private; optional * identifier; optional * m_textlabel; ttbutton * m_okbtn; ttbutton * identifier; cc_synthesize (ccnode *, m_target, target); identifier (sel_callfunco, m_okselector, okselector); cc_synthesize (sel_callfunco, m_cancelselector, cancelselector); cc_synthesize (ccnode *, m_destroytarget, destroytarget); // default handler (handler, handler, Handler); // The default OK destroy function cc_synthesize (sel_callfunco, m_destroycancelselector, destroycancelselector); // The default OK destroy function };
# Include "TTMsgBoxB. h "TTMsgBoxB: TTMsgBoxB () {m_target = NULL; m_okSelector = NULL; m_cancelSelector = NULL; m_destroyTarget = NULL; m_destroyOKSelector = NULL; condition = NULL;} TTMsgBoxB ::~ TTMsgBoxB () {} bool TTMsgBoxB: init () {// respond to the touch event CCDirector: shareddire()-> getTouchDispatcher ()-> addTargetedDelegate (this, -128-1, true); return true;} void TTMsgBoxB: onEnter () {CCLayer: onEnter ();} void TTMsgBoxB: onExit () {CCLayer :: onExit (); CCDirector: sharedDirector ()-> getTouchDispatcher ()-> removeDelegate (this);} bool TTMsgBoxB: ccTouchBegan (CCTouch * pTouch, CCEvent * pEvent) {return true;} void TTMsgBoxB: ccTouchMoved (CCTouch * pTouch, CCEvent * pEvent) {} void identifier: ccTouchEnded (CCTouch * pTouch, CCEvent * pEvent) {} void identifier:: ccTouchCancelled (CCTouch * pTouch, CCEvent * pEvent) {} void TTMsgBoxB: initWithStruct (CCObject * pObj) {if (pObj = NULL) {return ;} m_initS = * (MSGBOXBINIT *) pObj; m_target = m_initS.m_target; m_okSelector = executor; m_cancelSelector = executor; CCSize totalSize = CCSizeMake (400/TT_SCALE_RATE, 0); int totalHeight = 0; // button m_okBtn = TTButton: createWithImage ("but_sure.png"); if (m_okBtn) {m_okBtn-> callback (this, callfuncO_selector (TTMsgBoxB: onOkBtnClick )); m_okBtn-> setPosition (ccp (52/TT_SCALE_RATE, 25/TT_SCALE_RATE); this-> addChild (m_okBtn, 2);} m_cacelBtn = TTButton: createWithImage ("but_cancel.png "); if (m_cacelBtn) {m_cacelBtn-> callback (this, callfuncO_selector (TTMsgBoxB: timer); m_cacelBtn-> setPosition (ccp (208/TT_SCALE_RATE, 25/TT_SCALE_RATE )); this-> addChild (m_cacelBtn, 2);} // text CCSize textSize = CCSizeMake (320/TT_SCALE_RATE, 0); m_textLabel = CCLabelTTF: create (m_initS.m_strText.c_str (), "Helvetica", 24/TT_SCALE_RATE, textSize, kCCTextAlignmentCenter, kCCVerticalTextAlignmentCenter); if (m_textLabel) {m_textLabel-> setColor (ccc3( 109, 98, 79 )); m_textLabel-> setAnchorPoint (ccp (0.5f, 0); m_textLabel-> setPosition (ccp (0.5f * totalSize. width, m_okBtn-> getPosition (). y + m_okBtn-> getContentSize (). height + 20/TT_SCALE_RATE); totalHeight = m_textLabel-> getPosition (). y + m_textLabel-> getContentSize (). height + 35/TT_SCALE_RATE; this-> addChild (m_textLabel, 2);} // Title m_titleLabel = CCLabelTTF: create (m_initS.m_strTitle.c_str (), "Helvetica-Bold ", 36/TT_SCALE_RATE); if (m_titleLabel) {m_titleLabel-> setColor (ccc3 (56, 31, 14); m_titleLabel-> setAnchorPoint (ccp (0.5f, 0 )); m_titleLabel-> setPosition (ccp (0.5f * totalSize. width, totalHeight); totalHeight = m_titleLabel-> getPosition (). y + m_titleLabel-> getContentSize (). height + 35/TT_SCALE_RATE; this-> addChild (m_titleLabel, 2);} totalSize. height = totalHeight; // background CCSpriteFrame * bgFrame = CCSpriteFrameCache: trim ()-> spriteFrameByName ("tipsbg.png"); if (bgFrame) {m_bgSprite = CCScale9Sprite :: createWithSpriteFrame (bgFrame);} if (m_bgSprite) {m_bgSprite-> setAnchorPoint (CCPointZero); m_bgSprite-> setContentSize (totalSize ); // set the overall size this-> setContentSize (totalSize); this-> addChild (m_bgSprite, 1) ;}} void TTMsgBoxB: onOkBtnClick (CCObject * pObj) {if (m_destroyTarget & m_destroyOKSelector) {(m_destroyTarget-> * m_destroyOKSelector) (this);} if (m_target & m_okSelector) {(m_target-> * m_okSelector) (this) ;}} void TTMsgBoxB: onCacelBtnClick (CCObject * pObj) {if (m_destroyTarget & amp; dependencies) {(m_destroyTarget-> * m_destroyCancelSelector) (this );} if (m_target & m_cancelSelector) {(m_target-> * m_cancelSelector) (this) ;}} MSGBOXBINIT TTMsgBoxB: getInitStruct () {return m_initS ;}
As follows: