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

#iphone #xcode #cocos2d-iphone #armv7 #armv6

#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.оба находятся в определенном диапазоне, я что-то делаю.

Он отлично работал на симуляторе. Когда я скомпилировал его для своего тестового устройства, используя архитектуру armv7 (оптимизированную), он также работал. Но когда я скомпилировал его с включенными архитектурами armv6, armv7 (чего требует app Store), я заметил, что код больше не работает. CCLOGs показали мне, что система координат 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];
}