Системы координат экрана для armv6, armv7 (разработка для iPhone) - PullRequest
0 голосов
/ 02 ноября 2011

Я пишу игру для 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 показали мне, что система координат X, Y, используемая при компиляции для armv6, armv7 ОТЛИЧАЛАСЬ от той, которая использовалась, когда я компилировал только для armv7 (оптимизировано).

Как я могу обойти эту проблему? Является ли единственный способ использовать систему координат, используемую armv6, armv7 при тестировании на устройстве ... (это не работает на симуляторе)? Я не могу загрузить приложение для iPhone и скомпилировать только для armv7 (оптимизировано). (

1 Ответ

5 голосов
/ 02 ноября 2011

Для поиска касаний на экране в cocos2d, попробуйте этот код. Это правильно работает в моем игровом приложении

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