cocos2d-x3.x屏蔽下层触摸(制作透明图层暂停界面)
2017-07-04 10:41
337 查看
在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;
}
效果如图:
创建了一个透明层,中间的菜单按钮已经点击无效
转载来源:http://blog.csdn.net/qq_22560089/article/details/46548227
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;
}
效果如图:
创建了一个透明层,中间的菜单按钮已经点击无效
转载来源:http://blog.csdn.net/qq_22560089/article/details/46548227
相关文章推荐
- cocos2d-x3.x屏蔽下层触摸(制作透明图层暂停界面)
- cocos2d-x3.x屏蔽下层触摸(制作透明图层暂停界面)
- cocos2d-x3.x屏蔽下层触摸(制作透明图层暂停界面)
- cocos2d-x3.x屏蔽下层触摸(制作透明图层暂停界面)
- cocos2d-x3.x屏蔽下层触摸(制作透明图层暂停界面)
- cocos2d-x3.x屏蔽下层触摸(制作透明图层暂停界面)
- cocos2d-x3.x屏蔽下层触摸(制作透明图层暂停界面)
- cocos2d-x3.x屏蔽下层触摸(制作透明图层暂停界面)
- cocos2d-x3.x屏蔽下层触摸(制作透明图层暂停界面)
- cocos2d-x3.x屏蔽下层触摸(制作透明图层暂停界面)
- cocos2d-x3.x屏蔽下层触摸(制作透明图层暂停界面)
- cocos2d-x3.x屏蔽下层触摸(制作透明图层暂停界面)
- cocos2d-x3.x屏蔽下层触摸(制作透明图层暂停界面)
- cocos2d-x3.x屏蔽下层触摸(制作透明图层暂停界面)
- cocos2d-x3.x屏蔽下层触摸(制作透明图层暂停界面)
- cocos2d-x3.x屏蔽下层触摸(制作透明图层暂停界面)
- cocos2d-x 3.3 之卡牌设计 NO.5 设置界面(透明层和屏蔽下层触控)
- Cocos2d-x 3.0屏蔽下层触摸
- cocos2d-x3.x屏蔽触摸遮罩层屏蔽按钮
- cocos2d-x 游戏暂停和恢复,还可以屏蔽下层按钮触发