Системы координат экрана для 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 (оптимизированное). :(


person artemis    schedule 02.11.2011    source источник


Ответы (1)


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

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