如何在我的功能中引入延迟?

时间:2010-01-04 13:18:27

标签: iphone cocoa-touch uiimageview

我正在开发一款游戏,我正在缩小imageView的帧大小。当我使用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);
}
}

我想在每次换帧后引入延迟。

有人可以帮助我吗?

3 个答案:

答案 0 :(得分:2)

如何使用

[NSThread sleepForTimeInterval:]

介于每条指令之间?

答案 1 :(得分:1)

如果您只需要在开发期间暂停更改,请使用调试器的断点。

要发布,您应该使用动画块进行更改。为每个可能的更改创建一个单独的块,然后将动画持续时间设置为您想要的。

作为一般规则,您永远不会直接更改视图的框架,除非您希望它是瞬时的。为此目的精确地存在动画,即创建将视图状态的变化传达给用户的效果。他们不只是眼睛糖果。

如果出于某种原因,您不想使用动画,可以将每个大小更改移动到它自己的方法中,然后使用计时器调用每个方法。你可以调用第一个方法,它将设置一个定时器来调用第二个方法,这将设置一个定时器来调用第三个,依此类推。

答案 2 :(得分:0)

所以使用计时器并给它一个功能,这将占用适当的时间来执行,但对你的显示器没有影响?也许在你的程序中的正确位置运行一长串毫无意义的计算?