Cocos2dx 3.0 一些新用法。

        在用到3.0的時候會有很多函數用法的改變,下面只是自己在使用的過程中常出現的。

單點觸摸:

auto listener = EventListenerTouchOneByOne::create();
listener->setSwallowTouches(true);
listener->onTouchBegan = CC_CALLBACK_2(AnimationCollide::onTouchBegan, this); 
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);

 

同樣下面這種也是:

// Make sprite1 touchable
auto listener1 = EventListenerTouchOneByOne::create();
listener1->setSwallowTouches(true);

listener1->onTouchBegan = [](Touch* touch, Event* event)
{
	auto target = static_cast<Sprite*>(event->getCurrentTarget());

	Point locationInNode = target->convertToNodeSpace(touch->getLocation());
	Size s = target->getContentSize();
	Rect rect = Rect(0, 0, s.width, s.height);
	if (rect.containsPoint(locationInNode))
	{
		//target->setOpacity(180);
		return true;
	}
	return false;
};

listener1->onTouchMoved = [](Touch* touch, Event* event)
{
// 	auto target = static_cast<Sprite*>(event->getCurrentTarget());
// 	target->setPosition(target->getPosition() + touch->getDelta());
};

listener1->onTouchEnded = [=](Touch* touch, Event* event)
{
	auto target = static_cast<Sprite*>(event->getCurrentTarget());
	log("sprite onTouchesEnded.. ");
	//target->setOpacity(255);
	if (target == sprite2)
	{
		sprite2->setLocalZOrder(100);
	}
	else
	{
		sprite2->setLocalZOrder(20);
	}
	if(target == sprite1)
	{
		sprite1->setLocalZOrder(100);
	}
	else
	{
		sprite1->setLocalZOrder(10);
	}
	if(target == sprite3)
	{
		sprite3->setLocalZOrder(100);
	}
	else
	{
		sprite3->setLocalZOrder(30);
	}
};

這個方法是在Testcpp裏面,具體的效果是點擊到那張圖片後可以拖動,同時它的Zorder會升高。

在上面的代碼中出現了 CC_CALLBACK_2 和

listener1->onTouchBegan = [](Touch* touch, Event* event)、
listener1->onTouchEnded = [=](Touch* touch, Event* event)


 

第一個:

CC_CALLBACK_0
CC_CALLBACK_1
CC_CALLBACK_2
CC_CALLBACK_3

關於上面我簡單的理解就是回調函數中所使用的幾個參數。更加詳細的可以看這個位置 詳細講解

第二個:

listener1->onTouchBegan = [](Touch* touch, Event* event)、
listener1->onTouchEnded = [=](Touch* touch, Event* event)

關於onTouchBegan 的不明白的 詳細的講解   點擊打開鏈接

 

暫時寫這麼多。。。

 

發佈了56 篇原創文章 · 獲贊 12 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章