我正在制作这个应用程序,当你按下一个按钮时,角色就会上升,然后它会下降。(我希望它的行为如下:当它按下时,它必须上升200y,然后它开始下降) 这是我的代码:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var TheCharacter: UIImageView!
@IBOutlet weak var TheRocket: UIImageView!
@IBAction func TheCharacterJumps(_ sender: Any) {
let TheCharacterY = self.TheCharacter.frame.origin.y
UIView.animate(withDuration: 0.35, animations: {
self.TheCharacter.frame = CGRect(x: 167, y: TheCharacterY - 194, width: 40, height: 40)
}) { (finished) in
}
UIView.animate(withDuration: 2, animations: {
self.TheCharacter.frame = CGRect(x: 167, y: TheCharacterY + 435, width: 40, height: 40)
}) { (finished) in
}
}
}
所以它是这样的: 按下按钮时,角色会上升然后开始下降。 但是当按钮连续按下两次或多次时,而不是像200y那样上升,它只会增加到50y。 我该如何防止这种情况发生?
答案 0 :(得分:1)
如果你想要一个“飞扬”的动画,你应该使用动态动画师并为场景添加重力并强制使用元素。然后UIKit将计算动画。
Apple doc是:UIDynamicAnimator。
在这种情况下,每次按下按钮/屏幕时,向视图添加一些向上的力,它会自动上升并在失速后开始下降。
看看Ray Wenderlich教程:click
答案 1 :(得分:1)
如果您要实现这种用法的游戏,也许最好先看看SpriteKit而不是UIKit。看看SKSpriteNode以及如何添加SKPhysicsBody。