2010-01-04 4 views
0

Я разрабатываю игру, в которой я уменьшаю размер рамки изображения. Когда я вводил условие, используя цикл while, я не могу видеть, как изображение постепенно уменьшает его размер, так как оно сразу переходит к окончательному результату. Итак, я хочу представить задержку после каждой инструкции, чтобы постепенно видеть эффект ее уменьшения размера. Я не могу использовать таймер, поскольку мне нужно указать функцию, которая будет выполнена после этого интервала времени.Как ввести задержку в моей функции?

while(ravanImage1.frame.origin.y>=end.y) 
{ 
ravanImage1.frame=CGRectMake(150,((ravanImage1.frame.origin.y)-5),q,z); 

if(ravanImage1.center.y>=300&&ravanImage1.center.y<=370) 
{ 
    q=60; 
    z=60; 
    ravanImage1.frame=CGRectMake(150,((ravanImage1.frame.origin.y)-5),q,z); 
} 

if(ravanImage1.center.y>=230&&ravanImage1.center.y<=299) 
{ 
    q=40; 
    z=40; 
    ravanImage1.frame=CGRectMake(150,((ravanImage1.frame.origin.y)-5),q,z); 
} 

if(ravanImage1.center.y>=150&&ravanImage1.center.y<=229) 
{  
    q=20; 
    z=20; 
    ravanImage1.frame=CGRectMake(150,((ravanImage1.frame.origin.y)-5),q,z); 
} 
} 

Я хочу ввести задержку после каждого изменения рамки.

Может ли кто-нибудь помочь мне?

+0

Структура CoreAnimation была создана явно для обработки этих ситуаций. –

+0

Я считаю, что эта проблема была решена в вашем предыдущем вопросе на тему: http://stackoverflow.com/questions/1998754/after-applying-while-condition-code-starts-acting-differently –

+0

Да, вы правы Брэд! Thanx для вашей помощи .. – neha

ответ

1

Если вам просто нужно приостановить изменение во время разработки, используйте контрольные точки отладчика.

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

Как правило, вы никогда больше не меняете рамку вида, если вы не хотите, чтобы это было мгновенно. Анимации существуют именно для этой цели, то есть для создания эффекта, который сообщает об изменении состояния представления пользователю. Они не просто глазные конфеты.

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

+0

Я действительно не хочу использовать анимации, поскольку они создают проблему в моем приложении. Последний метод звучит неплохо. Я попробую ... – neha

+1

Тогда у вас будет много дополнительной работы. API основан на анимации. – TechZen

0

Итак, используйте таймер и дайте ему функцию, которая займет нужное количество времени для выполнения, но не повлияет на ваш дисплей? Может быть, запустите длинный цикл бессмысленных вычислений в нужном месте в вашей программе?

+0

Thanx, Mark! Я попробую это ... – neha

2

Как об использовании

[NSThread sleepForTimeInterval:] 

между ними каждой инструкции?

+0

Нет, я не могу использовать это, поскольку полное выполнение моей программы происходит в одном потоке. То, что я хочу остановить, является лишь частью этого. – neha

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