In Lern IOS Aktualisierung i eine App machte die Töne unter Verwendung AudioKit.io spielteine Oszillatorfrequenz von out-of-Viewcontroller
Wenn der Benutzer den Bildschirm tippt, wird ein neuer „Schlüssel“ gezogen wird und basierend In seiner X-Position wird die Frequenz des Oszillators eingestellt.
So jetzt möchte ich den Benutzer in der Lage sein, um die "Taste" zu ziehen und die Frequenz des Oszillators zu aktualisieren.
Ich nehme an, das ist eher eine Frage der Projektorganisation/logischen Organisation.
Es gibt:
- ViewController.swift (macht Oszillatoren und zieht den Schlüssel: didTap, toggleSound)
- CircularKeyView.swift (die Eigenschaften eines kreisförmigen Schlüssel: drawRect, didPan, etc)
von CircularKeyView.swift:
//PAN IT LIKE u FRYIN.
func didPan(panGR: UIPanGestureRecognizer) {
self.superview!.bringSubviewToFront(self)
var translation = panGR.translationInView(self)
self.center.x += translation.x
self.center.y += translation.y
panGR.setTranslation(CGPointZero, inView: self)
//so the coordinates can be updated when there's a pan
self.setNeedsDisplay() //updates the coordinates on a pan event
//updateOscillatorFrequency here?
}
von circularKeyVi ew:
...
override func viewDidLoad() {
super.viewDidLoad()
let tapGR = UITapGestureRecognizer(target: self, action: "didTap:")
self.view.addGestureRecognizer(tapGR)
let mixer = AKMixer(oscillator, osc2)
AudioKit.output = mixer
AudioKit.start()
}
func didTap(tapGR: UITapGestureRecognizer) {
let tapPoint = tapGR.locationInView(self.view)
let newCircularKey = circularKeyView(origin: tapPoint)
self.view.addSubview(newCircularKey)
oscillator.frequency = Double(newCircularKey.center.x) * 2
}
im Grunde, meine Frage ist: Wie kann ich das Verhalten von Panning zu Ändern einer Variablen (oder Array/Sammlung von Variablen) in dem Viewcontroller binden?
Ich denke, das ist mit Delegierten getan .. so lerne ich darüber. Updates zu kommen vielleicht – sova
Haben Sie das jemals herausgefunden? Ich versuche einen Sound zu aktualisieren, der mit einem AKPropertySlider spielt. Ich kann die Variablen aktualisieren, aber ich kann nicht herausfinden, wie man den Sound, der gerade läuft, aktualisiert. – Adrian
@Adrian Hallo Adrian, es ist eine lange Zeit her, seit ich das Material angeschaut habe, aber ja, es ist möglich. Sie können die Delegaten und das Protokoll verwenden. Grundsätzlich erlaubt das Delegate-Muster Ihnen, Variablen zu erstellen, die global in Ihrer App existieren, und jede schnelle Datei, die das "Protokoll" implementiert, kann auf die Variable mit ihren Änderungen zugreifen, iirc. Wenn du Hilfe brauchst, öffne ich meinen alten Code und schaue nach. – sova