Установка события свайпа на спрайт

Я передаю событие swipe для спрайта cocos2dx, но в основном проблема заключается в том, что событие назначено на весь экран. Я хочу, чтобы он был назначен только одному спрайту. Вот мой код:

rect = Sprite::create();
rect->setTextureRect(Rect(0, 0, 180, 80));

// ekranın y ekseninde ortası | visibleSize.height / 2 + origin.y
rect->setPosition(Point(visibleSize.width / 2 + origin.x, visibleSize.height + 80));
auto grad = LayerGradient::create(Color4B(255, 255, 38, 255), Color4B(199, 173, 68, 255));
grad->changeHeight(rect->getContentSize().height);
grad->changeWidth(rect->getContentSize().width);
//grad->setPosition(Point(visibleSize.width / 2 + origin.x, visibleSize.height / 2 + origin.y));
//grad->addChild(rect);

rect->addChild(grad);
this->addChild(rect);auto listener = EventListenerTouchOneByOne::create();

listener->onTouchBegan = CC_CALLBACK_2(GameScene::onTouchBegan, this);
listener->onTouchMoved = CC_CALLBACK_2(GameScene::onTouchMoved, this);
listener->onTouchEnded = CC_CALLBACK_2(GameScene::onTouchEnded, this);
listener->onTouchCancelled = CC_CALLBACK_2(GameScene::onTouchCancelled, this);

listener->setSwallowTouches(true);
this->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, rect);

0

Решение

Событие касания обычно вызывается, когда игрок касается экрана. Лучший способ реализовать слушателя на спрайте — подклассифицировать его:
http://www.cocos2d-x.org/wiki/How_To_Subclass_Sprite_And_Add_Event_Listeners

Позже вы можете проверить столкновение касания в событии слушателя спрайта (на Touch Began) и затем выполнить свою функцию

0

Другие решения


По вопросам рекламы [email protected]