cocos2dx 3.x判断node点击区域是否透明

有时候我们需要判断自己所触摸的区域是否是透明的,这时就需要调用glReadPixels函数来进行rgb色值的提取了

白白原创,手游专栏http://blog.csdn.net/u010229677

Size size = Director::getInstance()->getVisibleSize();
CCRenderTexture* render = RenderTexture::create(size.width, size.height);
render->beginWithClear(0,0,0,0);
node->visit(); //白白原创
GLubyte pColor[4];
Point location = this ->convertTouchToNodeSpace(touch);
glReadPixels(location.x,location.y,1,1,GL_RGBA,GL_UNSIGNED_BYTE,&pColor[0]);
render->end();
log("r %d g %d b %d a %d", pColor[0],pColor[1],pColor[2],pColor[3]);
if (!pColor[0]&&!pColor[1]&&!pColor[2])
{
	log("tou ming");
}
else
{
	log("bu tou ming");
}
时间: 2024-10-20 01:32:49

cocos2dx 3.x判断node点击区域是否透明的相关文章

cocos2d-x CCSprite 精灵监听点击事件

参考文章: cocos2d-x 精灵监听点击事件 http://labs.easymobi.cn/?p=5167 实现过程,实现CCTouchDelegate接口,在enter 的时候添加监听,exit 和析构时移除监听,点击时将touch 的坐标转化为相对精灵的坐标,如果是否在精灵的范围内,则响应点击.主要是参考前面两篇文章中的例子,不同的地方在判断区域,个人觉得太复杂.所以稍微修改了下,看起来更容易理解. PianoTile.h class PianoTile : public cocos2

Android上滑手势触发和不增加布局层级扩大点击区域

最近项目中需要实现手势上滑或者点击滑出界面的效果,实现上是利用GestureDetector,然后在onFling中判断,但遇到一个问题:手势上滑是针对整个布局的,但如果有对单独的View设置点击监听,在该View上的手势上滑会失效. 如果这个View本身就是专门用于点击的,那并没有什么问题,可惜的是,这个View的尺寸不大,所以要求扩大点击区域. 我们首先能想到的方法就是用一个容器将该View包起来,类似RelativeLayout,LinearLayout等,但这样布局的层级就会再加多一层.

自定义button的点击区域

某些情况下我们需要按钮有不规则的形状,在这些形状内点击才有响应,例如下面的图片中: 图片中红线圈出的两处都是用按钮做的,按钮的实际布置是上面第二张图所画的那样,所有按钮都是矩形的,但是中间的按钮和一圈的转盘形状都不可能用矩形,否则点击的时候难免相互影响. 那么如何自定义按钮点击的有效区域呢,其实很简单,只要重写一个函数即可: - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event 系统发生触摸事件的时候会从window到父控件到

Android 扩大 View 的点击区域

有时候,按照视觉图做出来效果后,发现点击区域过小,不好点击,用户体验肯定不好.扩大视图,就会导致整个视觉图变得不好看.那么有没有什么办法在不改变视图大小的前提下扩大点击区域呢? 答案是有! 能够解决这个问题的前提你要对 View 的事件分发机制有一定的了解. 下面我将简单介绍一下View 的事件分发机制,方便大家理解后面的解决办法. 为了更清楚的说明整个机制,采用如下的视图来说明点击的事件分发机制.下图是一个 FrameLayout (ViewGroup) 里面包含着一个 ImageView (

点击区域外隐藏该区域,event.stopPropagation()

event.stopPropagation() Description: Prevents the event from bubbling up the DOM tree, preventing any parent handlers from being notified of the event. 点击区域外隐藏该区域Example: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta content="chars

在UITableView的 didSelectRowAtIndexPath中获取点击区域

项目中,要在UITableViewCell区分不同的点击区域,比如左边点击执行某个操作,右边点击执行另一个操作.原本我的方案是在cell的左边和右边各放一个透明的UIButton,点击两个button执行不同的操作,而controller中的didSelectRowAtIndexPath函数就设为空了.但是后来有个问题,就是可以同时用多个手指长按在不同的cell上,导致触发过个操作,而且cell的选中态也不好控制. 后来想到,UIview的触摸事件可以得到触摸的位置,那可不可以在cell的tou

如何扩大ImageView的点击区域

我们在开发中会遇到,给imageview设置点击事件,但是美工切的原始图片一般在24dp左右,这个尺寸点击时会出现不灵敏的情况(点击区域太小). 解决方案: 给imageView设置  scaleType=”centerInside“   然后加大imageview的尺寸即可.  设置这个属性后,imageview不管多大,图片总是以本身的大小剧中显示. 注意事项:如果直接使用padding值来设置,图片的大小调整不好的话会出现图片被拉伸或压缩的情况.所以最简便的方法是使用scaleType属性

unity判断是否点击了UI界面

1.判断是否点击 UGUI界面: using UnityEngine; using System.Collections; using UnityEngine.UI; using UnityEngine.EventSystems; public class UiClickTest : MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame void Up

ios 添加到cell 上的button点击无效!扩大button的点击区域(黑魔法)

一般情况下点击效果都是正常的!要不然你对它做了什么?一般细心的小伙伴都没有遇到这种情况,但是呢! 当然我是二班的!在这里我主要讲两个问题,解决问题和普及魔法. 一.普及问题(button在cell上点击无效) 自定义一个cell,cell里边creat了一个button!然后调试了半天,什么反应都没有! 1.button的enable 设置为yes可点击的. 1.我以为我设置了交互禁用! self.userInteractionEnabled = YES; 2.button的frame越界了!