게임에서 단추가 있는 일반적인 알림 상자(2)
#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;
SEL_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 ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent);
void initWithStruct(CCObject * pObj);
void onOkBtnClick(CCObject * pObj);
void onCacelBtnClick(CCObject * pObj);
MSGBOXBINIT getInitStruct();
private:
MSGBOXBINIT m_initS;
CCScale9Sprite * m_bgSprite;
CCLabelTTF * m_titleLabel;
CCLabelTTF * m_textLabel;
TTButton * m_okBtn;
TTButton * m_cacelBtn;
CC_SYNTHESIZE(CCNode *, m_target, Target);
CC_SYNTHESIZE(SEL_CallFuncO, m_okSelector, OKSelector);
CC_SYNTHESIZE(SEL_CallFuncO, m_cancelSelector, CancelSelector);
CC_SYNTHESIZE(CCNode *, m_destroyTarget, DestroyTarget);//
CC_SYNTHESIZE(SEL_CallFuncO, m_destroyOKSelector, DestroyOKSelector);// OK
CC_SYNTHESIZE(SEL_CallFuncO, m_destroyCancelSelector, DestroyCancelSelector);// OK
};
#include "TTMsgBoxB.h"
TTMsgBoxB::TTMsgBoxB()
{
m_target = NULL;
m_okSelector = NULL;
m_cancelSelector = NULL;
m_destroyTarget = NULL;
m_destroyOKSelector = NULL;
m_destroyCancelSelector = NULL;
}
TTMsgBoxB::~TTMsgBoxB()
{
}
bool TTMsgBoxB::init()
{
// touch
CCDirector::sharedDirector()->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 TTMsgBoxB::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent)
{
}
void TTMsgBoxB::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 = m_initS.m_okHandle;
m_cancelSelector = m_initS.m_cancelHandle;
CCSize totalSize = CCSizeMake(
400/TT_SCALE_RATE,
0
);
int totalHeight = 0 ;
//
m_okBtn = TTButton::createWithImage("but_sure.png");
if (m_okBtn)
{
m_okBtn->addTouchupInsideHandle(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->addTouchupInsideHandle(this, callfuncO_selector(TTMsgBoxB::onCacelBtnClick));
m_cacelBtn->setPosition(ccp(
208/TT_SCALE_RATE,
25/TT_SCALE_RATE
));
this->addChild(m_cacelBtn,2);
}
//
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);
}
//
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;
//
CCSpriteFrame * bgFrame = CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName("tipsbg.png");
if (bgFrame)
{
m_bgSprite = CCScale9Sprite::createWithSpriteFrame(bgFrame);
}
if (m_bgSprite)
{
m_bgSprite->setAnchorPoint(CCPointZero);
m_bgSprite->setContentSize(totalSize);
// 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 && m_destroyCancelSelector)
{
(m_destroyTarget->*m_destroyCancelSelector)(this);
}
if (m_target && m_cancelSelector)
{
(m_target->*m_cancelSelector)(this);
}
}
MSGBOXBINIT TTMsgBoxB:: getInitStruct()
{
return m_initS;
}
효과도는 다음과 같습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.