//判断是否点到飞机
bool InGameLayer::onTouchBegan(Touch *touch, Event *unused_event)
{
CCLOG("bagan");
CCPoint point1 = touch->getLocation();
CCPoint point2 = player->getPosition();
if (point1.x - point2.x > 100 || point1.y - point2.y > 100 || point1.x - point2.x < -100 || point1.y - point2.y < -100)
{
//单点触摸中返回false则其他触摸函数不在被的调用
return false;
}
return true;
}
//移动飞机
void InGameLayer::onTouchMoved(Touch *touch, Event *unused_event)
{
CCLOG("move");
pos = touch->getLocation();
//判断是否超出边界
if (pos.x >= 640 - player->getContentSize().width / 2)
{
pos = ccp(640 - player->getContentSize().width / 2, pos.y);
}
if (pos.x <= player->getContentSize().width / 2)
{
pos = ccp(player->getContentSize().width / 2, pos.y);
}
if (pos.y >= 960 - player->getContentSize().height / 2)
{
pos = ccp(pos.x, 960 - player->getContentSize().height / 2);
}
if (pos.y <= player->getContentSize().height / 2)
{
pos = ccp(pos.x, player->getContentSize().height / 2);
}
//移动
player->moveTo(pos);
}
//触摸结束
void InGameLayer::onTouchEnded(Touch *touch, Event *unused_event)
{
CCLOG("ended");
}
//触摸取消?
void InGameLayer::onTouchCancelled(Touch *touch, Event *unused_event)
{
CCLOG("cancelled");
}
//事件注册,分发
void InGameLayer::addEvent()
{
/*单点触屏事件对象绑定上回调函数*/
EventListenerTouchOneByOne * eventTouch = EventListenerTouchOneByOne::create();
eventTouch->onTouchBegan = CC_CALLBACK_2(InGameLayer::onTouchBegan,this);
eventTouch->onTouchMoved = CC_CALLBACK_2(InGameLayer::onTouchMoved, this);
eventTouch->onTouchEnded = CC_CALLBACK_2(InGameLayer::onTouchEnded, this);
/*注测事件对象*/
EventDispatcher* dispatcher = Director::getInstance()->getEventDispatcher();
dispatcher->addEventListenerWithFixedPriority(eventTouch,1);
}