armv6,armv7的屏幕坐标系(IPhone开发)

时间:2011-11-02 10:37:21

标签: iphone xcode cocos2d-iphone armv7 armv6

我正在为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编译时使用的X,Y坐标系统,armv7与我编译为armv7(优化)时所使用的不同。

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

1 个答案:

答案 0 :(得分:5)

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

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