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

Cocos2d-x设置吞没单击属性来避免精灵重叠被点击后的事件续传

2015-05-19 20:17 465 查看
代码如下:

Size visibleSize = Director::getInstance()->getVisibleSize();

/* create two sprites which have overlapped parts */
Sprite* sp1 = Sprite::create("sprite1.png");
sp1->setPosition(Point(visibleSize.width * 0.5f, visibleSize.height * 0.5f));
this->addChild(sp1);

Sprite* sp2 = Sprite::create("sprite2.png");
sp2->setPosition(Point(visibleSize.width * 0.5f, visibleSize.height * 0.5f));
this->addChild(sp2);

auto listener = EventListenerTouchOneByOne::create();
listener->setSwallowTouches(true);
    listener->onTouchBegan = [](Touch* touch, Event* event){
/* get the target bind by the touch event listener */
auto target = static_cast<Sprite*>(event->getCurrentTarget());

Point pos = Director::getInstance()->convertToGL(touch->getLocationInView());

/* judge if the touch position inside the bounding box of sprite */
if (target->getBoundingBox().containsPoint(pos))
{
/* set the opacity of the sprite */
target->setOpacity(100);

return true;
}

return false;
};
listener->onTouchEnded = [](Touch* touch, Event* event){
/* restore the opacity of the sprite */
auto target = static_cast<Sprite*>(event->getCurrentTarget());
target->setOpacity(255);
};

/* register the touch event listener by event dispatcher to bind sprite1 */
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, sp1);

/* register the touch event listener by event dispatcher to bind sprite2 */
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener->clone(), sp2);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐