cocos2d-x3.x屏蔽下层触摸(制作透明图层暂停界面)

在init函数中添加如下代码:


bool HelloWorld::init()

{
//
// 1. super init first
if ( !Layer::init() )
{
return false;
}

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

auto bg=Sprite::create("HelloWorld.png");

bg->setPosition(Vec2(visibleSize/2)); //设置背景图居中显示

bg->setScale(2); //放大两倍

addChild(bg);


auto white_circle=Sprite::create("white_circle.png");

addChild(white_circle);

auto listen=EventListenerTouchOneByOne::create();

listen->onTouchBegan=[=](Touch * t,Event * e){

auto fadein=FadeIn::create(0); //立即淡入

white_circle->setPosition(t->getLocation()); //获取触摸坐标点并设置白点精灵坐标

auto fadeOut=FadeOut::create(0.5); //让白点淡出


white_circle->runAction(Sequence::create(fadein,fadeOut,NULL));//执行淡出动作完成后,执行callback



return false;
};

_eventDispatcher->addEventListenerWithSceneGraphPriority(listen,this);

auto menu=Menu::create(
MenuItemImage::create("CloseNormal.png",
"CloseSelected.png",
[=](Ref* pSender){

/*
Director::getInstance()->getEventDispatcher()->pauseEventListenersForTarget(this,true);
等价于_eventDispatcher->pauseEventListenersForTarget(this, true);
*/
_eventDispatcher->pauseEventListenersForTarget(this, true); //暂停事件监听

auto colorlay=LayerColor::create(Color4B(0, 0, 0, 128)); //创建一个半透明的颜色层


this->addChild(colorlay);



auto closeItem = MenuItemFont::create("close", [=](Ref* sender){

colorlay->removeFromParent();//从父节点清除clorlay图层,clorlay中的内容(菜单)会随之一起销毁

_eventDispatcher->resumeEventListenersForTarget(this, true);//设置重新接收事件监听

});

closeItem->setPosition(Vec2(100,100));

auto menu2=Menu::create(closeItem,NULL);

colorlay->addChild(menu2); //添加menu2到颜色图层colorlay


}),NULL);


addChild(menu);

return true;


}



效果如图:

创建了一个透明层,中间的菜单按钮已经点击无效


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值