您的位置:首页 > 移动开发 > Cocos引擎

cocos2d-x CCmenuSpriteItem 用getChildByTag()获取;

2015-01-01 00:15 357 查看
#include "BoardBg.h"
#define PEN_Tag_1 111
#define PEN_Tag_2 222
#define PEN_Tag_3 333

bool BoardBg::_isTouch1 = true;
bool BoardBg::_isTouch2 = true;
bool BoardBg::_isTouch3 = true;

CCScene * BoardBg::scene()
{
CCScene * s = CCScene::create();
CCLayer * layer = BoardBg::create();
s->addChild(layer);
return s;
}
bool BoardBg::init()
{
bool bRet = false;
do
{
CC_BREAK_IF(!CCLayer::init());

//点击后pen移动
_PenMoveX = 5;
_PenMoveY = 10;

addBoardBg();//背景;
addPenSpr();//添加pen;

_drawPen = drawPaint::create();
addChild(_drawPen,100);

bRet = true;
} while (0);
return bRet;
}

void BoardBg::addBoardBg()//添加背景;
{
const char * mainBgName = "mainBg5.png";
CCSize winSize = CCDirector::sharedDirector()->getWinSize();
_boradBg = CCSprite::create(mainBgName);
_boradBg->setAnchorPoint(ccp(0,0));
_boradBg->setScale(winSize.width / _boradBg->getContentSize().width);//屏幕适配;
addChild(_boradBg);
return;
}

void BoardBg::addPenSpr()//添加pen;
{
const char * penName = "pen.png";
_pen1 = CCSprite::create(penName);
_pen2 = CCSprite::create(penName);
_pen3 = CCSprite::create(penName);
_penSize = _pen1->getContentSize();

//_pen1->setPosition(ccp(_penSize.width / 2, _penSize.height / 2));
//_pen2->setPosition(ccp(_penSize.width / 2 * 2 + 10, _penSize.height / 2));
//_pen3->setPosition(ccp(_penSize.width / 2 * 3 + 10, _penSize.height / 2));

//按钮
pen1Item = CCMenuItemSprite::create(_pen1,_pen1, this, menu_selector(BoardBg::PenCallBack1));
pen1Item->setPosition(ccp(_penSize.width/2,_penSize.height/2));
pen1Item->setTag(PEN_Tag_1);

pen2Item = CCMenuItemSprite::create(_pen2, _pen2, this, menu_selector(BoardBg::PenCallBack2));
pen2Item->setPosition(ccp((_penSize.width / 2) * 2 + 20, _penSize.height / 2));
pen2Item->setTag(PEN_Tag_2);

pen3Item = CCMenuItemSprite::create(_pen3, _pen3, this, menu_selector(BoardBg::PenCallBack3));
pen3Item->setPosition(ccp((_penSize.width / 2) * 3 + 40, _penSize.height / 2));
pen3Item->setTag(PEN_Tag_3);

//menu
CCMenu * menu = CCMenu::create(pen1Item,pen2Item,pen3Item,NULL);
menu->setAnchorPoint(ccp(0,0));
menu->setPosition(ccp(20,0));
addChild(menu);
}
void BoardBg::RestorePen1()
{
pen1Item->setPosition(ccp(_penSize.width / 2, _penSize.height / 2));
_isTouch1 = true;
}
void BoardBg::RestorePen2()
{
pen2Item->setPosition(ccp((_penSize.width / 2) * 2 + 20, _penSize.height / 2));
_isTouch2 = true;
}
void BoardBg::RestorePen3()
{
pen3Item->setPosition(ccp((_penSize.width / 2) * 3 + 40, _penSize.height / 2));
_isTouch3 = true;
}

//回调,getTag获取
void BoardBg::PenCallBack1(CCObject* sender)
{
CCSprite * spr = (CCSprite*)sender;
spr->getChildByTag(PEN_Tag_1);
if (_isTouch1)
{
_drawPen->_isTouchDraw = true;
spr->setPosition(ccp(spr->getPositionX() - _PenMoveX, spr->getPositionY() + _PenMoveY));
_drawPen->_penBold = 5;

RestorePen2();
RestorePen3();
}
if (!_isTouch1)
{
_drawPen->_isTouchDraw = false;
spr->setPosition(ccp(spr->getPositionX() + _PenMoveX, spr->getPositionY() - _PenMoveY));
}
_isTouch1 = !_isTouch1;
}
void BoardBg::PenCallBack2(CCObject* sender)
{
CCSprite * spr = (CCSprite*)sender;
spr->getChildByTag(PEN_Tag_2);
if (_isTouch2)
{
_drawPen->_isTouchDraw = true;
spr->setPosition(ccp(spr->getPositionX() - _PenMoveX, spr->getPositionY() + _PenMoveY));
_drawPen->_penBold = 7;

RestorePen1();
RestorePen3();
}
if (!_isTouch2)
{
_drawPen->_isTouchDraw = false;
spr->setPosition(ccp(spr->getPositionX() + _PenMoveX, spr->getPositionY() - _PenMoveY));
}
_isTouch2 = !_isTouch2;
}
void BoardBg::PenCallBack3(CCObject* sender)
{
CCSprite * spr = (CCSprite*)sender;
spr->getChildByTag(PEN_Tag_3);
if (_isTouch3)
{
_drawPen->_isTouchDraw = true;
spr->setPosition(ccp(spr->getPositionX() - _PenMoveX, spr->getPositionY() + _PenMoveY));
_drawPen->_penBold = 9;

RestorePen1();
RestorePen2();
}
else
{
_drawPen->_isTouchDraw = false;
spr->setPosition(ccp(spr->getPositionX() + _PenMoveX, spr->getPositionY() - _PenMoveY));
}
_isTouch3 = !_isTouch3;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: