嗨,当我点击一个按钮时,我遇到了问题。
我会使用一个计时器来停止我的代码几毫秒来创建流体的运动。
这是我的代码:
- (IBAction)goRight:(id)sender {
sprite.image = [UIImage imageNamed:@"sprite_rr.png"];
[NSThread sleepForTimeInterval:1];
sprite.center = CGPointMake(sprite.center.x + 5, sprite.center.y);
sprite.image = [UIImage imageNamed:@"sprite_lr.png"];
}
但是这个代码患者30毫秒然后直接执行而无需等待。
你能帮帮我吗? 感谢PS:抱歉我的英语不好^^
答案 0 :(得分:0)
使用[NSThread sleepForTimeInterval:1];
的不良做法。这会停止主线程上运行的所有内容。当到达这行代码时,主线程被阻塞了你指定的时间,然后将执行其余的代码。请记住,当您阻止线程时,您的应用程序将冻结,因为所有用户界面更新都是在此步骤中完成的,无法执行。除非你有理由,否则请避免使用它。
在没有提供更多代码的情况下,或者在为UIImageView
制作动画时想要停止的确切示例,我认为我们无法继续提供帮助。
答案 1 :(得分:0)
您可能会使用以下内容:
[UIView animateWithDuration: 1
delay: 0.03 // delays the animation for however long you set. This is 30 ms.
options: UIViewAnimationOptionCurveEaseIn
animations: ^{
[sprite setFrame:CGRectMake(sprite.frame.origin.x+5, sprite.frame.origin.y, sprite.frame.size.width, sprite.frame.size.height)];
}
completion: ^(BOOL finished){}];
答案 2 :(得分:0)
尝试:
- (IBAction)goRight:(id)sender {
sprite.image = [UIImage imageNamed:@"sprite_rr.png"];
CGRect frame = sprite.frame;
frame.origin.x += 5;
[UIView animateWithDuration:1.0 animations:^{
[sprite setFrame: frame];
sprite.image = [UIImage imageNamed:@"sprite_lr.png"];
}];
}
为了动画或移动"在视觉上,您需要使用animateWithDuration: animations:
方法。
编辑:尝试设置框架而不是修改中心。