gpt4 book ai didi

ios - 如何对简单的 UIView 动画执行操作

转载 作者:行者123 更新时间:2023-11-28 06:44:22 26 4
gpt4 key购买 nike

直到几周前,我才开始编写任何代码,虽然我自己取得了合理的进展,但我正在为一些我希望有人不介意提供帮助的事情而苦苦挣扎。

我正在尝试使用 Swift(xCode 版本 7.3 - 7D175)为我的女儿制作一个简单的应用程序。这是一系列动画,角色在月球陨石坑内上下跳动。

我想要做的是在按下一个动画 UIImage 时调用一个函数。理想情况下,我希望它在按下动画时播放声音(我知道如何调用声音,只是不是这样)

我创建了一个类,我在其中编写了动画代码

  func alienAnimate() {

UIView.animateWithDuration(0.3, delay: 0, options: [.CurveLinear, .AllowUserInteraction], animations: {
self.center.y -= 135
}, completion: nil)

UIView.animateWithDuration(0.3, delay: 3, options: [.CurveLinear, .AllowUserInteraction], animations: {
self.center.y += 135
}, completion: nil)

}

如果有人能指出正确的方向,我将不胜感激。我想可能有更好的动画方法,但这就是我目前所知道的。

编辑 - 5 月 2 日

好吧,我最终让它工作了......好吧,几乎:)它仍然没有完全按照我的意愿工作,但我正在努力。

动画本质上是沿着一条路径垂直移动(所以外星人突然出现,就像他们从洞里出来一样)。下面的代码有效,但仍然允许您在有效地进入一个洞时单击路径开头的图像。

我仍然需要弄清楚如何点击它现在实际所在的位置,并且无法按下它的起点。

View of App

    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
let touch = touches.first
let touchLocation = touch!.locationInView(self.view)
if self.imgAlien.layer.presentationLayer()!.hitTest(touchLocation) != nil {
sfxPop.play()

} else if self.imgAlien.layer.presentationLayer()!.hitTest(touchLocation) != nil {
sfxPop.play()
} else if self.imgAlien2.layer.presentationLayer()!.hitTest(touchLocation) != nil {
sfxPop.play()
} else if self.imgAlien3.layer.presentationLayer()!.hitTest(touchLocation) != nil {
sfxPop.play()
} else if self.imgAlien4.layer.presentationLayer()!.hitTest(touchLocation) != nil {
sfxPop.play()
} else if self.imgAlien5.layer.presentationLayer()!.hitTest(touchLocation) != nil {
sfxPop.play()
} else if self.imgUFO.layer.presentationLayer()!.hitTest(touchLocation) != nil {
sfxPop.play()

}

最佳答案

假设您的星球和动画按照您的意愿上下运行,您要做的是检测触摸:

这只是一个例子:

var image : UIImage = UIImage(named:"alien.png")!
var image2 : UIImage = UIImage(named:"alienBoss.png")!
var alien1 = UIImageView(image: image)
var alien2 = UIImageView(image: image)
var alienBoss = UIImageView(image: image2)

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
let touch = touches.first as! UITouch
if(touch.view == alien1){
// User touch alien1, do whatever you want
} else
if(touch.view == alien2){
// User touch alien2, do whatever you want
} else
if(touch.view == alienBoss){
// User touch alienBoss, do whatever you want
}
}

然后,您想要启用声音以便可以使用 AVAudioPlayer 库:

    import UIKit
import AVFoundation

class ViewController: UIViewController {

var player:AVAudioPlayer = AVAudioPlayer()

override func viewDidLoad() {
super.viewDidLoad()

let audioPath = NSBundle.mainBundle().pathForResource("alienSound", ofType: "mp3")
var error:NSError? = nil
}

您可以使用下面的代码来播放声音、停止、设置音量:

do {
player = try AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: audioPath!))
// to play the mp3
player.play()
// to stop it
player.stop()
// to pause it
player.pause()
// to set the volume
player.volume = 0.5 // from 0.0 to 1.0
...
}
catch {
print("Something bad happened.")
}

关于ios - 如何对简单的 UIView 动画执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36967714/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com