Cocos2d iphone 为缩放视图上的触摸位置获取不同的x和y坐标

Cocos2d iphone 为缩放视图上的触摸位置获取不同的x和y坐标,cocos2d-iphone,touch,zooming,Cocos2d Iphone,Touch,Zooming,我正在使用Cocos2d开发一个游戏。我需要能够在必要时进行平移和缩放,因此,出于这个原因,我将CCLayerPanZoom扩展添加到我的项目中。最近我注意到一个缩放图层的问题。问题是,如果我在进行缩放或平移之前触摸缩放可平移层,我会得到正确的x,y坐标。但是如果我缩放图层,触摸到的位置坐标与之前的不同。以下是我获取触摸位置的方法: -(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ UITouch

我正在使用Cocos2d开发一个游戏。我需要能够在必要时进行平移和缩放,因此,出于这个原因,我将CCLayerPanZoom扩展添加到我的项目中。最近我注意到一个缩放图层的问题。问题是,如果我在进行缩放或平移之前触摸缩放可平移层,我会得到正确的x,y坐标。但是如果我缩放图层,触摸到的位置坐标与之前的不同。以下是我获取触摸位置的方法:

-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
        UITouch *touch=[touches anyObject];
        CGPoint touchedLocation=[touch locationInView:touch.view];
        touchedLocation=[[CCDirector sharedDirector] convertToGL:startPoint];
}

您可能会问我如何确定缩放前后两点是否不同。我有一个精灵在视图中的预定点上。当我触摸精灵时,我会记录精灵和触摸位置的位置。在缩放之前,这些点几乎是相同的,在x和y上只有几个单位的差异。但在缩放之后,它们是完全不同的点,我猜这个差异与缩放比例成正比。我不想问如何在缩放前后保持触摸位置不变,我想问的是在这种情况下我应该怎么做。

好的,我终于找到了我的错误所在。我忘记了一个事实,当我在一个图层上添加一个精灵,然后参考它的位置时,它总是显示相同的点。例如,如果我添加一个精灵并将其位置设置为100100,然后平移或缩放图层,最后得到精灵的位置,我仍然会得到100100,即使精灵暂时不在屏幕的边界内。因此,当我在平移或缩放图层后触摸精灵时,我会触摸到不同的位置,而不是100100。这就是让我困惑的原因。为了解决这个问题,我只是从被触摸的位置减去了层位置的x,y。这样我就可以得到两个点-精灵的位置和触摸的位置-是相同的。 注:该层的锚固点为ccp(0,0)