0

我正在使用 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 有几个单位的差异。但是在缩放之后它们是完全不同的点,我猜这种差异与缩放比例成正比。我不想问如何在缩放前后让触摸的位置相同,我想问在这种情况下我应该怎么做。

4

1 回答 1

0

好的,我终于明白了我的错误所在。我忘记了当我在图层上添加精灵并稍后引用它的位置时,它总是显示相同的点。例如,如果我添加一个精灵并将其位置设置为 100,100,然后平移或缩放图层并最终获得精灵的位置,我仍然会得到 100、100,即使精灵不在屏幕暂时。因此,当我在图层平移或缩放后触摸精灵时,我触摸到不同的位置,而不是 100,100。这就是让我感到困惑的原因。为了解决这个问题,我只是从触摸位置的 x,y 中减去了图层位置的 x,y。这样我就可以得到两个点——精灵的位置和触摸的位置——是相同的。注意:图层的锚点是 ccp(0,0);

于 2013-09-18T04:24:34.547 回答