2009-11-09 3 views
0

У меня есть немного проблем прямо сейчас, добавив одно и то же изображение несколько раз и удалив все за один раз после игры gamelooop. Мне удалось добавить изображение, создав 1 UIImageview для каждого изображения, но я знаю, что это не практический способ разумной памяти, так как я выделяю много uiimageview одним и тем же изображением. Я использую этот код для загрузки изображения:Добавление UIImage с тем же изображением несколько раз и удаление его всего одним кодом

UIImageView *imgView1 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"correct.png"]]; 
UIImageView *imgViewn = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"correct.png"]]; 
CGRect imgRect = CGRectMake((touch.x-20), (touch.y-20), 40, 40); 
[imgView1 drawInRect:imgRect]; 
[imgViewn drawInRect:imgRect]; 
[imgView1 release] 
[imgViewn release] 

В основном я использую это, чтобы добавить базу изображения на месте расположения usertouch сделанного на подвид (с изображением). Если пользовательский набор касаний верен, это то, где игра петли и отображает другое изображение для пользователя. Но после загрузки нового изображения изображение «correct.png», которое добавлено при предыдущем касании, все еще отображается.

Может ли кто-нибудь показать мне правильный способ сделать это, но я знаю, что у меня будет проблема с памятью позже, если я буду продолжать выделять изображение каждый раз, когда пользователь прикасается к экрану. Спасибо заранее.

ответ

0

Если вы пытаетесь просто перемещать изображение (или серию изображений) через каждый запуск gameloop, а не создавать и удалять их каждый раз, возможно, создать серию из N изображений только один раз.

Когда начнутся касания или галоп, рисуйте изображения в прямоугольниках, которые вы вычисляете, из события касания, а затем, когда цикл закончен, установите скрытое свойство объекта на ДА или НЕТ (не совсем точно, что ваша цель).

Это трудно дать вам код без получения более подробной информации о том, что вы делаете, но основная идея заключается в следующем:

При первом запуске программы/вид, создать N изображений, а также установить imageView.hidden = YES;

В каждом цикле вызовите метод [imageView drawInRect:imgRect] для каждого изображения и установите imageView.hidden = NO;.

Когда просмотр/программа завершена, вызовите метод [imageView release] для каждого объекта.

+0

Я действительно думал об этом. когда игра загружается, у меня есть 8 изображений одного и того же типа, и они скрыты YES. Затем, когда пользователь коснется правого места, переместите 1 изображение в место и установите его в положение «НЕТ». Я просто подумал, что есть более практичный способ сделать это. Во всяком случае, может показать мне несколько строк кода, как я могу это сделать? Я смотрю образцы, и он говорит, что я должен использовать touchmoveEvent & touchEnded вместе с touchbegan. Благодарю. – Drahc

 Смежные вопросы

  • Нет связанных вопросов^_^