几个比较重要的触摸

1.遮挡住触摸

void CommonTools::zheDang(Node* node)
{
	auto listener = EventListenerTouchOneByOne::create();
	
	listener->setSwallowTouches(true);

	listener->onTouchBegan = [](Touch* touch, Event* event)
	{
		return CommonTools::testRect(touch, event->getCurrentTarget() );
	};
	
	listener->onTouchMoved = [](Touch* touch, Event* event){};

	listener->onTouchEnded = [](Touch* touch, Event* event){};

	Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener , node);
}

2.tableview 滚动取消触摸

void CommonTools::onClickTableCell(Node* rectNode, Node* scaleNode, std::function<void()> fun, bool tun, float scaleNum)
{
	Director::getInstance()->getEventDispatcher()->removeEventListenersForTarget(scaleNode);
	//fangzhi  callback  twice ..
	auto listener = EventListenerTouchOneByOne::create();

	listener->setSwallowTouches(tun);
	
	listener->onTouchBegan = [=]( Touch* touch , Event* event )
	{
		if ( CommonTools::testRect(touch, rectNode) )
		{
			scaleNode->stopAllActions();
			auto scaleTo = ScaleTo::create(0.05f, scaleNum);
			scaleNode->runAction(scaleTo);
			
			bool *isMove = new bool(false);
			scaleNode->setUserData(isMove);
			log("aaaaaaaaccc   %d  %d", isMove , scaleNode );
			return true;
		}
		return false;
	};

	listener->onTouchMoved = [=](Touch* touch, Event* event)
	{
		bool *isMove = (bool*)scaleNode->getUserData();
		
		if (*isMove == false)
		{
			if (touch->getLocation().getDistance(touch->getStartLocation()) > 15)
			{
				scaleNode->setScale(1.0f);
				*isMove = true;
			}
		}
	};

	listener->onTouchEnded = [=](Touch* touch, Event* event)
	{
		scaleNode->stopAllActions();
		scaleNode->setScale(1.0f);
		
		bool *isMove = (bool*)scaleNode->getUserData();
		log("aaaaaaaabbb   %d  %d", isMove , scaleNode );
		
		if (*isMove == true)
		{
			delete isMove;
			return;
		}

		delete isMove;

		if ( CommonTools::testRect(touch, rectNode) )
		{
			fun();
		}
	};

	Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, rectNode);
}

3.普通触摸放大

void CommonTools::onClick2(Node* rectNode, Node* scaleNode, std::function<void()> fun, bool tun , float scaleNum )
{
	auto listener = EventListenerTouchOneByOne::create();

	listener->setSwallowTouches(tun);

	listener->onTouchBegan = [=](Touch* touch, Event* event)
	{
		bool isClick = CommonTools::testRect(touch, rectNode);
		if (isClick)
		{
			scaleNode->stopAllActions();
			auto scaleTo = ScaleTo::create(0.05f, scaleNum);
			scaleNode->runAction(scaleTo);
		}
		return isClick;
	};

	listener->onTouchMoved = [](Touch* touch, Event* event){};

	listener->onTouchEnded = [=](Touch* touch, Event* event)
	{
		scaleNode->stopAllActions();
		auto scaleTo = ScaleTo::create(0.05f, 1.0f);
		scaleNode->runAction(scaleTo);
		if (CommonTools::testRect(touch, rectNode))
		{
			fun();
		}
	};

	Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, rectNode);

}

4.触摸检测 居家旅行必备

bool CommonTools::testRect( Touch* touch , Node* node )
{
	auto po = node->convertTouchToNodeSpace(touch);	
	Size size = node->getContentSize();
	Rect rect(0,0,size.width,size.height);
	return rect.containsPoint(po);
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值