【cocos2dx 小技巧】半透明屏蔽罩和弹出框的实现
来源:互联网 发布:软件instagram下载 编辑:程序博客网 时间:2024/06/13 15:29
今天介绍一下,弹出框的和屏蔽罩的小实现~
弹出框主要用到了cocos2dx生命周期里面的OnEnter()函数,就是当Layer被addChild的时候会调用的函数(所以如果把OnEnter的代码加到init里面效果应该也是一样的~)
屏蔽罩的实现是用了MenuItemImage和LayerColor,前者可以设置区域大小并获取点击,后者则可以设置Color4B。 效果图如下:
主要代码:
//ShaderLayer.hvoid setClickBgBlock(std::function<void()> block);std::function<void()> clickBGBlock; //ShaderLayer.cppauto item = MenuItemImage::create();item -> setContentSize(visibleSize);item -> setCallback([&](Ref *pSender){ //背景图点击时候执行 if (clickBGBlock != NULL) { this -> clickBGBlock(); }});
如果对ios中的block不熟悉的话,就搜一下lambda 吧(我觉得就是个匿名函数指针)。然后当MenuItemImage被点击时,就调用clickBGBlock()函数;
//HelloWorldScene.cpp//屏蔽在popUp上的触摸auto listener = EventListenerTouchOneByOne::create();listener -> setSwallowTouches(true);listener -> onTouchBegan = [](Touch *touch, Event *event){ auto target = static_cast<Sprite *>(event -> getCurrentTarget()); Vec2 locationInNode = target->convertToNodeSpace(touch->getLocation()); Size s = target->getContentSize(); Rect rect = Rect(0, 0, s.width, s.height); if(rect.containsPoint(locationInNode)){ //这里return true swallowTouches才有效 return true; } return false;};
这一段代码,是通用的,只要在最后面再加一句addEventListenerWithSceneGraphPriority
就可以监听触摸控制,(你监听的target的ContentSize内)。
(我总觉得应该还有更简单的方法可以实现这样的功能,如果你知道,请第一时间告知我一声~)
附上代码+图片:http://7sblre.com1.z0.glb.clouddn.com/PopUpAndShaderLayer.zip
欢迎访问我的博客:helkyle.tk
2 0
- 【cocos2dx 小技巧】半透明屏蔽罩和弹出框的实现
- 三种方法实现弹出框边框半透明和圆角的效果
- PopUpWindow实现半透明弹出框关键点
- Android实现底部半透明弹出框PopUpWindow
- Cocos2dx 小技巧 Label的换行(js实现)
- Cocos2dx 小技巧 Label的换行(js实现)
- 弹出框及层的屏蔽功能实现
- js中的弹出确认取消的弹出框小技巧
- IOS弹出一个半透明的框
- 屏蔽拨号弹出用户和密码的提示框
- 半透明Activity来实现对话框效果小技巧
- 常用的一些javascript小技巧(屏蔽)
- 网址拦截和弹出窗口的屏蔽
- 网址拦截和弹出窗口的屏蔽
- Cocos2dx - 创建半透明层并屏蔽向下触摸
- cocos2dx弹出层屏蔽菜单事件
- 如何使用纯js实现一个带有灰色半透明背景的弹出框
- DivCSS+JavaScript实现 始终居中的半透明弹出层
- NGUI 3.5教程(九)Scroll view - 制作【商店】和【背包】(待续)
- Cortex系列M0-4简单对比
- 动态规划—求最长字符串子序列
- linux编程-文件操作(5)
- 勾股定理
- 【cocos2dx 小技巧】半透明屏蔽罩和弹出框的实现
- 将哈夫曼树转化成二叉树
- Struts2 拦截器调用过程、ModelDrivenIntercepto拦截器和ParametersInterceptor拦截器简单介绍
- Android复习
- 2014-12-18记录
- Qt Lighthouse学习(一)
- 九度 题目1045:百鸡问题
- 如何在ubuntu 系统上为 php 加上 redis 扩展
- tableView 分割线左边短15像素问题