0

我正在为 iPhone/iPodTouch 编写游戏(使用 Cocos2d),我注意到一些奇怪的东西......

我需要检测玩家触摸的屏幕部分以执行某些操作。

例如:

-(void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event {
CGPoint touchLocation = [touch locationInView:[touch view]];    
//DEBUG
CCLOG(@"Button pressed: X Location: %f",touchLocation.x);
CCLOG(@"Button pressed: Y Location: %f",touchLocation.y);

...而当 touchLocation.x 和 touchLocation.y 都在一定范围内时,我会做一些事情。

它在模拟器上运行良好。当我为我的测试设备编译它时,使用 armv7 架构(优化)它也可以工作。但是当我使用 armv6 编译它时,启用了 armv7 架构(这是应用商店所需要的),我注意到代码不再有效。CCLOG 向我展示了我为 armv6、armv7 编译时使用的 X、Y 坐标系与我仅为 armv7(优化)编译时使用的坐标系不同。

我怎样才能解决这个问题?在设备上测试时使用 armv6、armv7 使用的坐标系的唯一方法是……(这在模拟器上不起作用)?我无法为 iPhone 上传应用程序并仅为 armv7 编译(优化)。:(

4

1 回答 1

5

要在 cocos2d 中查找屏幕上的触摸,试试这个代码。它在我的游戏应用程序中正常工作

- (void)ccTouchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {
    UITouch *myTouch = [touches anyObject];
    CGPoint location = [myTouch locationInView:[myTouch view]];
    location = [[CCDirector sharedDirector] convertToGL:location];
}
于 2011-11-02T11:05:30.447 回答