Системы координат экрана для armv6, armv7 (разработка для iPhone)

Я пишу игру для 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 ответ

Решение

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

- (void)ccTouchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {
    UITouch *myTouch = [touches anyObject];
    CGPoint location = [myTouch locationInView:[myTouch view]];
    location = [[CCDirector sharedDirector] convertToGL:location];
}
Другие вопросы по тегам