Я создаю приложение, в котором пользователь может щелкнуть карту и услышать различный звук в зависимости от места нажатия. У меня есть точка в многоугольнике для этого, и она отлично работает. Я также создал систему воспроизведения аудио, которая ставит аудиофайлы в очередь и воспроизводит их по порядку. Это тоже работает. Однако я пытаюсь реализовать метод, который проверяет, уже щелкнул ли он ранее по области / полигону, который он только что щелкнул, чтобы один и тот же звук не мог воспроизводиться снова и снова. У меня есть класс PlaceInMap, который содержит многоугольник для области и выполняет необходимые проверки, находится ли нажатая точка в многоугольнике и т. Д. И т. Д. *
На данный момент у меня есть 2 экземпляра этого класса PlaceInMap, хранящихся в NSMutableArray, и всякий раз, когда происходит щелчок, я перебираю этот массив и вызываю метод каждого экземпляра - (BOOL)checkCollisionWithLat:(NSString *)lat andLon:(NSString *)lon
. Метод возвращает YES или NO в зависимости от того, находится ли щелчок внутри многоугольника. Это прекрасно работает (я выводю результаты на этикетке). Вот метод:
- (BOOL)checkCollisionWithLat:(NSString *)lat andLon:(NSString *)lon {
if ( [self isLocationInsideX:lat andY:lon] ) {
if ( currentlyHere == 0) {
[[appDelegate audioPlayer] addToQueue:audioFileName];
[[appDelegate audioPlayer] iterateQueue];
}
currentlyHere = 1;
return YES;
}
else {
currentlyHere = 0;
return NO;
}
}
Однако по какой-то причине проверка для currentlyHere
, похоже, не работает, за исключением первого экземпляра класса ... Частично.
Вот что происходит:
Я получаю свое первоначальное местоположение в бесконечном цикле 1. Это внутри первого экземпляра, звучит звук. Затем я нажимаю на многоугольник на втором экземпляре, и звучит звук. Теперь я снова щелкаю, чтобы создать экземпляр многоугольника, и его звук воспроизводится, когда я снова нажимаю на многоугольник экземпляра, звук не воспроизводится. Но каждый раз после этого, когда я нажимаю на полигон экземпляра, звук воспроизводится так, как и должно быть ...
Теперь, когда я удаляю это if ( currentlyHere == 0 )
, звуки воспроизводятся правильно ...
В настоящее время это NSInteger, но я пробовал это с int и BOOL также ...
Это довольно странно ... Текстовый вывод всегда правильно показывает, на каком полигоне я щелкнул.
И извините за опечатки мои глаза закончились ... = P
Edit:
В настоящее время в заголовке класса определена переменная экземпляра. Это начало класса:
- (id) init {
if (self = [super init]) {
currentlyHere = 0;
[self setAppDelegate:[[UIApplication sharedApplication] delegate]];
}
return self;
}