Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 如何在代码中调用UIView动画_Loops_Animation_Uiview_Timer_Game Loop - Fatal编程技术网

Loops 如何在代码中调用UIView动画

Loops 如何在代码中调用UIView动画,loops,animation,uiview,timer,game-loop,Loops,Animation,Uiview,Timer,Game Loop,关于UIView动画,我有一个相当简单的问题,但我花了一整天的时间试图解决 我想实现一个UIView动画,它将由代码内部的事件触发。这意味着它不是由用户按下按钮触发的,也不是由视图加载触发的,它将由游戏中发生的事情触发(图像的爆炸效果) 到目前为止,我看到的教程和视频都在viewDidLoad中声明了它们的UIView动画,这对我来说不起作用,因为我不希望动画立即发生 有些人把它写在用户手指触发的“触摸”中。这也行不通,因为人的触摸不会启动动画 我的游戏使用了计时器和“gameLoop”,因此当

关于UIView动画,我有一个相当简单的问题,但我花了一整天的时间试图解决

我想实现一个UIView动画,它将由代码内部的事件触发。这意味着它不是由用户按下按钮触发的,也不是由视图加载触发的,它将由游戏中发生的事情触发(图像的爆炸效果)

到目前为止,我看到的教程和视频都在viewDidLoad中声明了它们的UIView动画,这对我来说不起作用,因为我不希望动画立即发生

有些人把它写在用户手指触发的“触摸”中。这也行不通,因为人的触摸不会启动动画

我的游戏使用了计时器和“gameLoop”,因此当我在main方法中编写动画代码时,它会在1秒内被调用100多次(我在控制台中看到动画重复的日志)

我认为这是因为main方法连接到主计时器,它每1秒刷新一次

如果我希望UIView动画只调用一次而不是无限次,我应该在哪里键入代码

我应该为动画创建一个新方法吗?如果有的话,我怎么称呼这个方法呢


感谢所有能帮忙的人

这样做很容易:

@property (nonatomic) BOOL explosionHappened;

- (void)gameLoop {
    // <lots of your code here>
    if (explosionHappened) {
        [UIView animateWithDuration:1.0 animations:^{whatever-you-like;}];
        explosionHappened = NO;
    }
}
@属性(非原子)布尔爆炸发生;
-(无效)游戏循环{
// 
如果(发生爆炸){
[UIView animateWithDuration:1.0动画:^{任意;}];
爆炸发生=否;
}
}