我有一个CCLayerPanZoom子类。出于测试目的,我在屏幕中间放了一个精灵。我在缩放之前和之后进行以下测试:
if(CGRectContainsPoint(mySprite.boundingBox,touchedPoint))
NSLog(@"Touch inside the sprite");
在缩放之前我得到"触摸精灵内部"输出,但当它缩放时,我不会。我问了一个类似的问题(Getting different x and y coordinates for touched location on a zoomed view),后来又发现了。但我找到的解决方案仅适用于平移时,而不适用于缩放。那里有很多游戏,这必须是超级简单的(至少在我之前完成)。我需要能够使触摸点与缩放前相同。
答案 0 :(得分:0)
我很遗憾所有浪费的时间找到摆脱这个问题的方法。事实证明,在Cocos2D中有一个名为convertToNodeSpace的整齐的方法可以解除所有重量级的重量。不需要进行所有那些疯狂的计算来考虑平移距离和缩放比例。我只是做了以下事情,一切都像魔术一样
touchedPoint=[self convertToNodeSpace: touchedPoint];
其中self是CCLayerPanZoom的子类,CCLayerPanZoom是CCLayer的子类。就这样。希望这有助于某人。