ccTouchesBegan 中如何让获取的坐标是相对整个屏幕的坐标,而不是在当前view的坐标
在cocos2d中,在我们在CCLayer中处理 ccTouchesBegan等类似的touch事件的时候,我们一般用下面的代码来获得当前的用户点击位置:
UITouch *touch=[touches anyObject];
CGPoint touchLocation= [touch locationInView:[touch view]];
CGPoint glLocation=[[CCDirector sharedDirector] convertToGL:touchLocation];
glLocation = [self convertToNodeSpace:glLocation];
这里一般用到
[touch locationInView:[touch view]] 这句话,这句话的意思是,获得touch在当前view的location 的相对坐标,这个时候有个问题,如果我们只想在当前layer处理这个事件,如果用户点击的view不是我们想要处理的view的时候,这个时候会有问题,导致对用户是否touch在我们想要的区域的判断会有问题。比如下面的判断是基于以上的代码的:
//判断是否是touch在ruler的范围内
if (
glLocation.y >= - SelBarSprite.contentSize.height * 0.5f &&
glLocation.y <= SelBarSprite.contentSize.height * 0.5f &&
glLocation.x >= - SelBarSprite.contentSize.width * 0.5f &&
glLocation.x <= SelBarSprite.contentSize.width * 0.5f)
{
bTouchInsideBlinderRuler=true;
touchBeginPoint=glLocation;
touchOldPoint=glLocation;
}
今天总算找到了好的解决方法了,就是使用egalView ,也就是获得touch相对于egalview的坐标,这样获取的坐标就是基于winSize的坐标了,判断区域也不会有问题。
修改后的代码如下:
UITouch *touch=[touches anyObject];
CGPoint touchLocation = [touch locationInView:[[CCDirector sharedDirector] view]];
CGPoint glLocation=[[CCDirector sharedDirector] convertToGL:touchLocation];
glLocation = [self convertToNodeSpace:glLocation];
中间的变化在于:将
CGPoint touchLocation= [touch locationInView:[touch view]];
替换成了:
CGPoint touchLocation = [touch locationInView:[[CCDirector sharedDirector] view]];
这要获得的就是基于egalView的坐标了。
分享到:
相关推荐
主要介绍了android获得当前view在屏幕中坐标的方法,涉及Android针对view坐标相关属性的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
Android MotionEvent中getX()与getRawX()都是获取屏幕坐标(横),但二者又有区别 getX() : 是获取相对当前控件(View)的坐标 getRawX() : 是获取相对显示屏幕左上角的坐标
这个二维坐标系是完全继承View,本人在处理图片灰度值的时候用到,很简单美观的二维坐标系,找了很久合适的,于是自己写了一个,该坐标系可以连接坐标上坐标点,为了方便我只连接了3个点,很多点的时候,可以用循环...
让你准确获取iphone view上面鼠标点击时候的坐标位置
自己描述的一个自定义View的坐标关系,对基础知识巩固有点帮助
应用: QGraphicsView pyqtSignal,QPoint,Qt ... self.setWindowTitle("Demo8_5, View/Scene/Item关系和坐标变换") font=self.font() font.setPointSize(11) self.setFont(font) centralWidget =QWidget
getX() : 是获取相对当前控件(View)的坐标 getRawX() : 是获取相对显示屏幕左上角的坐标 演示示例代码 Java代码: public class MainActivity extends Activity implements OnTouchListener { private ...
一个小的坐标转化工具,可以将坐标点或其他的点,转化到自定义的view上面
QGraphicsView框架容易忽视的坐标问题-“画布”QgraphicsScene到底放在了哪儿?
应用QT QGraphicsview 显示图片,并加入了鼠标事件获取图片像素坐标,利用鼠标绘制矩形框选图片选区,选择的选区显示在Lable控件上。得到图片像素坐标以后,并利用OpenCV截取图片的的选区,显示在Qlable控件上面。本...
SMT适配Allegro坐标,可直接上传了, 附:导坐标教程 (视频)-ALLEGRO导坐标教程.zip
表现为显示在屏幕上的各种视图,如 TextView、LinearLayout 等。 1.2、View 分类 View 主要分为两类,具体如下表格所示: 类别 示例 特点 单一视图 即一个 View,如 TextView、EditText 不包含子View ...
NULL 博文链接:https://jandroid.iteye.com/blog/1285548
主要是纯Qt绘图,绘制RT数据,支持框选局部放大查看 也可以进行多通道数据显示,在代码基础上可拓展性比较强。
View提供了getLocationOnScreen( int[] location)方法来获取在整个屏幕内的绝对坐标,该坐标值为View左上角的坐标。注意该View的坐标值是从屏幕左上角开始获取的,所以也包括了通知栏的高度 该方法的具体实现 /** ...
主要为大家详细介绍了python点击鼠标获取坐标,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
自定义TextView,使部分内容有点击事件,并计算其坐标位置,并显示一个自定义的View来展示关键词的一些想要的信息
基于pyqt的自定义QGraphicsScene支持画矩形以及返回矩形的坐标
可以在cell上弹出的菜单,不用获取cell坐标,直接引入这个view就可以弹出菜单,很好用,拓展性也很强