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

cocos2dx-3.2 笔记 - 点击事件

2014-08-22 10:45 183 查看
点击事件检测

直接上代码

auto dispatcher = Director::getInstance()->getEventDispatcher();
auto listener = EventListenerTouchOneByOne::create();
listener->onTouchBegan = CC_CALLBACK_2(GameLayer::onTouchBegan, this);
listener->onTouchMoved = CC_CALLBACK_2(GameLayer::onTouchMoved, this);
listener->onTouchEnded = CC_CALLBACK_2(GameLayer::onTouchEnded, this);
dispatcher->addEventListenerWithSceneGraphPriority(listener, this);

bool GameLayer::onTouchBegan(Touch* touch, Event *event)
{
return true;
}
void GameLayer::onTouchMoved(Touch* touch, Event *event)
{

}
void GameLayer::onTouchEnded(Touch*touch, Event *event)
{

}


检测点击了Sprite

bool GameLayer::CheckTouchAli(Touch *touch)
{
//将点击点转换成自己坐标系中的坐标,即相对于aliSprite(一个Sprite)的原点
Vec2 pt = aliSprite->convertTouchToNodeSpace(touch);
int nw = aliSprite->GetRect().size.width;
int nh = aliSprite->GetRect().size.height;
Rect rc(0,0, nw, nh);
return rc.containsPoint(pt);
}


Sprite跟随拖动

void GameLayer::SetAliPosToTouchPos(Touch* touch)
{
Vec2 pt = aliSprite->convertTouchToNodeSpace(touch);
int nw = aliSprite->GetRect().size.width;
int nh = aliSprite->GetRect().size.height;

Vec2 touchPos = Vec2(aliSprite->getPositionX()-nw*0.5+pt.x
,aliSprite->getPositionY()-nh*0.5+pt.y);

aliSprite->setPosition(touchPos);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: