Iphone SDK: массивы изображений?

Я делаю приложение "Tapping-App", в котором вы должны убивать зомби, нажимая на них. В настоящее время я не могу добиться никакого прогресса, потому что не могу правильно использовать нужные мне методы.

Мое приложение работает так:

У меня есть таймер, который создает изображение 3 раза в секунду:

[NSTimer scheduledTimerWithTimeInterval:1.0/3 
                                 target:self 
                               selector:@selector(Spawn) 
                               userInfo:nil 
                                repeats:YES];

то у меня есть команда Spawn:

- (void) Spawn {
    CGRect myImageRect = CGRectMake(0.0f, 0.0f, 320.0f, 109.0f);
    UIImageView *myImage = [[UIImageView alloc] initWithFrame:myImageRect];
    [myImage setImage:[UIImage imageNamed:@"myImage.png"]];
    myImage.opaque = YES;
    [self.view addSubview:myImage];
    [myImage release]
}

У меня также есть команда TouchesBegan:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [[event allTouches] anyObject];
    CGPoint touchLocation = [touch locationInView:self.view];   
}

Что я хочу сделать, так это поместить все нерестовые изображения в массив; Если коснуться одного из изображений, я хочу, чтобы оно было удалено из супервизора. Я хочу знать, как работает массив и как я могу удалить объекты, добавленные в массив, из другой функции, такой как «TouchesBegan».

Пожалуйста, помогите мне с моей проблемой!

РЕДАКТИРОВАТЬ:

Неважно... Я искал в Интернете и нашел несколько полезных ресурсов, которые были почти тем, что мне было нужно. Наконец-то я понял, как это работает, и заставил свою функцию спавнера работать с коллизией и с «TouchesBegan».

Если кому-то нужен код, просто спросите меня.

DD


person DailyDoggy    schedule 17.02.2011    source источник


Ответы (1)


Используйте [NSMUtableArray addObject:] и [NSMUtableArray removeObject:]

В вашем интерфейсе что-то вроде:

@interface MyClass
{
    NSMutableArray *zombies_;
}

В вашей реализации после инициализации массива измените метод порождения, включив в него строку

[self.zombies addObject:myImage];

и в вашем обработчике касания после того, как вы определите, какое представление было затронуто, что-то вроде

[zombies_ removeObject:theView];
[theView removeFromSuperview];

Хотя, подумав об этом, вам может быть лучше просто создать экземпляры UIButton вместо UIIMageView и написать обработчики касания, чтобы определить, какое представление было затронуто.

person Carl Veazey    schedule 17.02.2011
comment
Я уже пробовал, но по какой-то причине не смог заставить его работать. Можете ли вы объяснить немного больше, пожалуйста, и привести примеры .h и .m ?? Заранее спасибо! - person DailyDoggy; 18.02.2011
comment
Я попробовал еще раз, но теперь у меня есть 1 ошибка в TouchesBeagan: ImageView не объявлен. ([self.zombies addObject: myImage];) - person DailyDoggy; 18.02.2011
comment
РЕДАКТИРОВАТЬ: теперь я вижу ваше редактирование. Я не предоставил код, чтобы определить, какое представление было использовано. Так что вам нужно сделать это. Кроме того, похоже, что вы очень новичок в программировании. Не сдавайтесь, но обязательно попытайтесь понять основы, такие как переменные и их объявление. - person Carl Veazey; 18.02.2011
comment
Tnx за все, но что мне теперь делать?? - person DailyDoggy; 18.02.2011
comment
Гм, я не собираюсь писать вашу программу для вас, извините. - person Carl Veazey; 18.02.2011
comment
ха-ха XD я понимаю! Спасибо вам за все, вы мне очень помогли! Но если бы вы могли помочь мне объявить ImageView внутри моих Touches, я был бы еще более благодарен :) Пока я оставлю вопрос открытым, возможно, кто-то добавит что-то к вашему отличному ответу! Спокойной ночи! - person DailyDoggy; 18.02.2011
comment
Если вам нужна помощь в объявлении переменной, вы должны прочитать учебник по основам C. Если вам нужна помощь в определении того, что присвоить вашей переменной внутри вашего обработчика касания, вам придется посмотреть на сравнение кадров представлений. Я все еще думаю, что вам лучше использовать UIButton или распознаватель жестов. - person Carl Veazey; 18.02.2011
comment
Дело не в объявлении. Проблема в том, что ImageView порождается снова и снова PER CODE. Вот почему он не объявлен в функции TouchesBegan или в InterFace. Любые идеи?? - person DailyDoggy; 18.02.2011
comment
Я умолчал об этом, потому что у меня не было времени просматривать документы, но на самом деле вам нужен hitTest:withEvent: - person Carl Veazey; 18.02.2011