2017-07-06 66 views
0

我是新来的Xcode和斯威夫特,但我想我最好:) 我需要一点帮助。我已经写了这个代码到目前为止...但我有一个问题,我不知道如何解决它... 嗯,我的问题是,我无法检查两个变量是否相等。更确切地说,我想检查“fileAudio”号码是否与应用中显示的照片号码相同。如何检查来自不同函数的两个变量是否相等?

我还需要一些帮助来显示两个随机图片(leftImage和rightImage)和“playSound”按钮以链接到它们中的一个。此时......我只能将它与左图像链接起来。

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

var images1: [UIImage] = [ 

    UIImage(named: "foto0.png")!, 
    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: "foto0.png")!, 
    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 


var player: AVAudioPlayer! 
var ran1:Int = 0 
var ran2:Int = 0 


@IBOutlet weak var leftImage: UIImageView! 

@IBOutlet weak var rightImage: UIImageView! 

@IBOutlet weak var sh: UIImageView! 


@IBAction func playSound(_ sender: Any) { 

    let fileaudio:String = "s"+String(ran1) 
    let soundFilePath = Bundle.main.url(forResource: fileaudio, withExtension: ".m4a")! 
    player = try! AVAudioPlayer(contentsOf: soundFilePath) 
    player.prepareToPlay() 
    player.play() 
} 
    @IBAction func nextImages(_ sender: Any) { 
    ran1 = Int(arc4random_uniform(7) + 1) 
    ran2 = Int(arc4random_uniform(6) + 2) 

    let imageName1:String = "foto"+String(ran1) 
    leftImage.image = UIImage.init(named: imageName1) 

    let imageName2:String = "foto"+String(ran2) 
    rightImage.image = UIImage.init(named: imageName2) 

    leftImage.isUserInteractionEnabled = true 
    self.view.addSubview(leftImage) 
    let gesture1 = UITapGestureRecognizer(target: self, action: #selector(ViewController.singleTap1)) 
    leftImage.addGestureRecognizer(gesture1) 

    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 == ran1 { 
     print("\(currentImageIndex)") 
     sh.image = UIImage(named: "happy.png") 
    } else { 
     print("\(currentImageIndex)") 
     sh.image = UIImage(named: "sad.png") 
    } 
} 

func singleTap2() { 
    if ran1 == ran2 { 
     sh.image = UIImage(named: "happy.png") 
    } else { 
     sh.image = UIImage(named: "sad.png") 
    } 

} 

谢谢你,拉杜

回答

2

你应该产生一个随机数从0到1来表示两个按钮。一个singleTap:函数应该处理这两种情况。

fileprivate var leftRightNum: Int! 

@IBAction func nextImages(_ sender: Any) { 
    ran1 = Int(arc4random_uniform(7) + 1) 
    ran2 = Int(arc4random_uniform(6) + 2) 

    let imageName1:String = "foto"+String(ran1) 
    leftImage.image = UIImage.init(named: imageName1) 

    let imageName2:String = "foto"+String(ran2) 
    rightImage.image = UIImage.init(named: imageName2) 

    leftImage.isUserInteractionEnabled = true 
    self.view.addSubview(leftImage) 
    let gesture1 = UITapGestureRecognizer(target: self, action: #selector(ViewController.singleTap(_:))) 
    leftImage.addGestureRecognizer(gesture1) 

    sh.image = UIImage(named: "question") 
    rightImage.isUserInteractionEnabled = true 
    self.view.addSubview(rightImage) 
    let gesture2 = UITapGestureRecognizer(target: self, action: #selector(ViewController.singleTap(_:))) 
    rightImage.addGestureRecognizer(gesture2) 

    leftRightNum = Int(arc4random_uniform(2)) 
} 

@IBAction func playSound(_ sender: Any) { 
    let fileaudio:String = "s"+String(leftRightNum == 0 ? ran1 : ran2) 
    let soundFilePath = Bundle.main.url(forResource: fileaudio, withExtension: ".m4a")! 
    player = try! AVAudioPlayer(contentsOf: soundFilePath) 
    player.prepareToPlay() 
    player.play() 
} 

func singleTap(_ recognizer: UIGestureRecognizer) { 
    if (recognizer.view == leftImage && leftRightNum == 0) || (recognizer.view == rightImage && leftRightNum == 1) { 
     sh.image = UIImage(named: "happy.png") 
    } else { 
     sh.image = UIImage(named: "sad.png") 
    } 
} 
+0

我不想在playSound中产生一个随机数。我有两个图像(左和右)和一个按钮,playSound。我需要将playSound按钮链接到两个图像中的一个(不总是相同)。当我点击playSound按钮时,我听到一个音频,例如狗吠声。然后使用必须选择代表声音的图像(左或右)。你能帮我做这件事吗?请:) –

+0

看看我编辑的答案。 – the4kman

+0

非常感谢你!它的功能就像是一种魅力:D 我可以问你,如何在打开应用程序时让它显示2张图像?现在,当我打开应用程序..我只看到playSound按钮和nextImages按钮。如果我点击playSound,因为我打开应用程序..它崩溃......错误是“预计发现零...”再次感谢! –

相关问题