单点触摸事件 事件注册

//判断是否点到飞机
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);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值