みなさんこんばんは。
僕は先月の27日からプログラミングを志し、schooで勉強をはじめたのですが今のバージョンのswiftでは走らないコードがあるので占いアプリを作るのにサクッとはいきませんでした。
調べて一通り動いたコードを貼るので参考にしていただけると幸いです。
ちなみに横にシェイクするアニメーションはどう調べてもわからなかったんでいつかわかったときに書いてみようと思います。
大吉と中吉が出やすくなってますがそこは好みで変えてください。
おやすみなさい。
Swift:ViewController.swift
import UIKit
import AVFoundation
class ViewController: UIViewController {
@IBOutlet weak var animalLabel: UILabel!
@IBOutlet weak var resultLabel: UILabel!
var player: AVAudioPlayer!
var BGMPlayer : AVAudioPlayer!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
self.navigationController?.setNavigationBarHidden(true, animated: false)
let url = Bundle.main.bundleURL.appendingPathComponent("bgm.mp3")
do{
BGMPlayer = try AVAudioPlayer(contentsOf : url)
BGMPlayer.numberOfLoops = -1
BGMPlayer.volume = 0.2
BGMPlayer.prepareToPlay()
BGMPlayer.play()
}catch{
print("BGMエラーです。")
}
}
override func viewWillAppear(_ animated : Bool){
super.viewWillAppear(animated)
if !BGMPlayer.isPlaying{
BGMPlayer.play()
}
}
override func viewDidAppear(_ animated : Bool){
super.viewDidAppear(animated)
}
override func viewWillDisappear(_ animated : Bool){
super.viewWillDisappear(animated)
if BGMPlayer.isPlaying{
BGMPlayer.pause()
}
}
override func viewDidDisappear(_ animated : Bool){
super.viewDidDisappear(animated)
}
@IBAction func tellFortunes(_ sender: Any) {
UIView.animate(withDuration :1.0, animations: {
self.animalLabel.transform = CGAffineTransform(scaleX: 0.2, y: 0.2)
self.resultLabel.isHidden = true
self.animalLabel.alpha = 0.0
}, completion: { (bool) -> Void in
self.animalLabel.transform = CGAffineTransform.identity
self.resultLabel.isHidden = false
self.animalLabel.alpha = 1.0
self.changeLabel()
})
}
func changeLabel(){
let random = arc4random_uniform(100)
var soundName = ""
switch random{
case 0..<25:
animalLabel.text = "🐩"
resultLabel.text = "大吉だワン!"
soundName = "Dog.mp3"
case 25..<50:
animalLabel.text = "😻"
resultLabel.text = "中吉だニャー!"
soundName = "Cat.mp3"
case 50..<70:
animalLabel.text = "🐎"
resultLabel.text = "吉だヒヒーン!"
soundName = "Hose.mp3"
case 70..<80:
animalLabel.text = "🐑"
resultLabel.text = "末吉だメェ~!"
soundName = "Sheep.mp3"
case 80..<90:
animalLabel.text = "🐘"
resultLabel.text = "凶だゾウ"
soundName = "Elephant.mp3"
default:
animalLabel.text = "🐯"
resultLabel.text = "大凶だガオー!!"
soundName = "Tiger.mp3"
}
let url = Bundle.main.bundleURL.appendingPathComponent(soundName)
do{
player = try AVAudioPlayer(contentsOf : url)
player.play()
} catch {
print("鳴き声エラーです。")
}
}
}