加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

cocos2d-x CCmenuSpriteItem 用getChildByTag()获取;

发布时间:2020-12-14 19:57:34 所属栏目:百科 来源:网络整理
导读:#include "BoardBg.h"#define PEN_Tag_1 111#define PEN_Tag_2 222#define PEN_Tag_3 333bool BoardBg::_isTouch1 = true;bool BoardBg::_isTouch2 = true;bool BoardBg::_isTouch3 = true;CCScene * BoardBg::scene(){CCScene * s = CCScene::create();CCLa
#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,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,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;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读