2017-06-23 76 views
1

我有這個代碼,它的工作,但不是真的想。我是Xcode/Swift /開發應用程序的新手。我將它看教程和使用一些片斷作爲例子,但至今工作:)如何隨機將圖像鏈接到聲音?

  1. 我想使它在這樣的工作:

    當我點擊playSound和聽到它,然後我必須在leftImage和rightImage之間進行選擇。與playSound匹配的圖像。我已經嘗試了很多方法來使它工作..但沒有...我不能讓聲音索引字符串比較爲「如果a == b ..」

  2. 當我打開該應用程序時,它顯示我只有兩個底部按鈕..但沒有任何圖像。我怎樣才能讓它顯示第一個圖像?

  3. 我也喜歡使它有點隨意想...當我點擊「nextImage」按鈕,我想顯示不同的圖像,但只有一個鏈接到聲音..所以當我玩聲音..只檢查與聲音相匹配的照片。

  4. 此時,我只有8張照片/聲音進入陣列,但是當我在nextImage上點擊9次以上時,圖像仍在繼續播放..但聲音從開始就開始,而不是更多鏈接。例如,在第10個圖像..它playSound說它在1.我怎樣才能使它遵循圖像索引?

  5. 如何將圖像索引轉換爲文本?例如,如果它顯示我的圖像「foto1」;我想在圖片下向我展示標籤中的文字。

import UIKit 
import AVFoundation 

class ViewController: UIViewController { 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

var soundFiles: [String] = [ 
    "s0", 
    "s1", 
    "s2", 
    "s3", 
    "s4", 
    "s5", 
    "s6", 
    "s7", 
    "s8", 
    "s9" 
] 

var images1: [UIImage] = [ 

    UIImage(named: "foto1.png")!, 
    UIImage(named: "foto2.png")!, 
    UIImage(named: "foto3.png")!, 
    UIImage(named: "foto4.png")!, 
    UIImage(named: "foto5.png")!, 
    UIImage(named: "foto6.png")!, 
    UIImage(named: "foto7.png")!, 
    UIImage(named: "foto8.png")! 
] 

var images2: [UIImage] = [ 

    UIImage(named: "foto1.png")!, 
    UIImage(named: "foto2.png")!, 
    UIImage(named: "foto3.png")!, 
    UIImage(named: "foto4.png")!, 
    UIImage(named: "foto5.png")!, 
    UIImage(named: "foto6.png")!, 
    UIImage(named: "foto7.png")!, 
    UIImage(named: "foto8.png")! 
] 

var happySad: [UIImage] = [ 
    UIImage(named: "sad.png")!, 
    UIImage(named: "happy.png")! 
    ] 

var currentImageIndex = 0 
var currentImage2Index = 0 


@IBOutlet weak var leftImage: UIImageView! 

@IBOutlet weak var rightImage: UIImageView! 

@IBOutlet weak var sh: UIImageView! 





@IBAction func nextImages(_ sender: Any) { 
currentImageIndex += 1 
    let numberOfImages = images1.count 
    let nextImage1Index = currentImageIndex % numberOfImages 
    leftImage.image = images1[nextImage1Index] 
    leftImage.isUserInteractionEnabled = true 
    self.view.addSubview(leftImage) 
    let gesture1 = UITapGestureRecognizer(target: self, action: #selector(ViewController.singleTap1)) 
    leftImage.addGestureRecognizer(gesture1) 


currentImage2Index += 1 
    let numberOfImages2 = images2.count 
    let nextImage2Index = currentImage2Index % numberOfImages2 
    rightImage.image = images2[nextImage2Index] 
    sh.image = UIImage(named: "question") 
    rightImage.isUserInteractionEnabled = true 
    self.view.addSubview(rightImage) 
    let gesture2 = UITapGestureRecognizer(target: self, action: #selector(ViewController.singleTap2)) 
    rightImage.addGestureRecognizer(gesture2) 

} 

func singleTap1() { 
    if currentImageIndex == currentImage2Index { 
     sh.image = UIImage(named: "happy.png") 
     print("ok") 
    } else { 
     sh.image = UIImage(named: "sad.png") 
     print("not ok") 
    } 
} 
func singleTap2() { 
    if currentImageIndex == currentImage2Index { 
     sh.image = UIImage(named: "happy.png") 
     print("ok2") 
    } else { 
     sh.image = UIImage(named: "sad.png") 
     print("not ok2") 
    } 
} 


var player: AVAudioPlayer! 

@IBAction func playSound(_ sender: Any) { 
    let numberOfImages = images1.count 
    let nextImage5Index = currentImageIndex % numberOfImages 
    let soundFilePath = Bundle.main.url(forResource: soundFiles[nextImage5Index], withExtension: ".m4a")! 
    player = try! AVAudioPlayer(contentsOf: soundFilePath) 
    player.prepareToPlay() 
    player.play() 

} 
} 

回答

1

我認爲你是對這個問題複雜化。

我會親自創建一個包含遊戲每個「級別」的結構。

enum correctImageType { 
    case left, right 
} 

struct Level { 
    var word: String 
    var leftImage: UIImage 
    var rightImage: UIImage 
    var soundFile: String 
    var correctImage: correctImageType 
} 

var level1 = Level(word: "Dog", leftImage: UIImage(named: "dog"), rightImage: UIImage(named: "cat", soundFile: "Woof", correctImage: .left) 

這給你足夠的信息在一個數據結構中顯示每個級別。然後,您可以創建這些項目的數組,排序它們,隨機對它們進行排序,標記爲完成,因爲每個項目都已完成等。

您的問題中有很多問題。我會試着讓它更具體一些,並且一次解決問題的一個特定部分。發佈多個問題只要他們不同,就沒有問題。

+0

對於我來說,現在對於我來說有點難以完成,但是我會搜索以學習如何實現您所說的並使其工作:D 感謝您的幫助,我感謝它!我會盡量按照你所說的 –

+0

來對你打擾:)。你能給我一個功能性的例子,說明如何調用下一個按鈕的水平?以及如何使用播放聲音按鈕播放聲音? ....我真的無法想象如何去做。謝謝 –