gpt4 book ai didi

swift - 在不同的类中使用 function() 变量 - Swift

转载 作者:行者123 更新时间:2023-11-30 10:19:47 24 4
gpt4 key购买 nike

如何在 customView 类中使用 getLevel() 的值?该函数与 NSTimer 链接。这些值是 mp3 文件的分贝值,我想在 customView 中使用它来将分贝值与动画同步

class customView: UIView {

// get getLevels() value

}


class ViewController: UIViewController, AVAudioPlayerDelegate {


override func viewDidLoad() {
super.viewDidLoad()



var bundle = NSString(string: NSBundle.mainBundle().pathForResource("guitar", ofType: "mp3")!)
var error: NSError? = nil
player = AVAudioPlayer(contentsOfURL: NSURL(string: bundle), error: &error)
player.delegate = self
player.volume = 1.0
player.meteringEnabled = true
player.play()



var timer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: Selector("getLevel"), userInfo: nil, repeats: true)

}


func getLevel() {

if (player.playing == true) {

player.updateMeters()
var dblevel = player.averagePowerForChannel(1)
var percentage = CGFloat( pow(10, (0.05 * dblevel)) * 100)

// This prints out the the decibel levels from 0.0 to 100.0 every 0.1 sec
println(percentage)


}

}

我需要的变量是“百分比”。我有什么选择来做到这一点?谢谢戈达特。

最佳答案

代码中的注释应该是您理解这一点所需的全部内容:

class CustomView: UIView {
var percentage: CGFloat = 0.0 {
didSet {
setNeedsDisplay() // this will cause the system to tell the view to draw itself.
}
}

func drawRect(rect: Rect) {
// draw yourself based on percentage
}
}

class ViewController: ... {
func getLevel() {

if (player.playing == true) {

player.updateMeters()
var dblevel = player.averagePowerForChannel(1)
var percentage = CGFloat( pow(10, (0.05 * dblevel)) * 100)

myCustomView.percentage = percentage // this is how to pass the information.
}
}
}

关于swift - 在不同的类中使用 function() 变量 - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27702141/

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