Please help me to find a mistake.
I need each pad to play own sound from array, but only pads 13, 14, 15 does. At the same time i put a labels with node name on each pad, what tells that node has a name, so it looks like problem not in names and i cant catch what is it. If you have something else to say about improving this code, please feel free to say, i'm newbie and would be happy to hear.
What am i doing wrong?
Thanks
PS: And i want to say, im doing it on sprite kit just for challenge.
import SpriteKit
import GameplayKit
import AVFoundation
class GameScene: SKScene {
var i = 1
let sounds = ["Kick", "Clap","Hat","OpHat","Snare","Cow","Crash","Snap","Chant","Tom","11","12","13","14","15"]
override func didMove(to view: SKView) {
do {
for sound in sounds {
let player = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: Bundle.main.path(forResource: sound, ofType: "wav")!) as URL)
player.prepareToPlay()
}
} catch {
}
var frameHightMulti = CGFloat(0)
self.physicsWorld.gravity = CGVector(dx: 0, dy: 0)
let tittleLabel = SKLabelNode(text: "Let the music play")
tittleLabel.fontSize = 50
tittleLabel.fontName = "Helvetica Nue"
tittleLabel.fontColor = UIColor.white
tittleLabel.position = CGPoint(x: 0, y: 600)
addChild(tittleLabel)
for _ in 1...5 {
var frameWidthMulti = CGFloat(0)
for _ in 1...3 {
let pad = SKSpriteNode(color: UIColor.cyan, size: CGSize(width: 220, height: 220))
pad.physicsBody = SKPhysicsBody(rectangleOf: pad.frame.size)
pad.position = CGPoint(x: -240 + frameWidthMulti, y: -500 + frameHightMulti)
pad.name = sounds[i-1]
let nameLabel = SKLabelNode(text: pad.name)
nameLabel.fontSize = 50
nameLabel.fontName = "Helvetica Nue"
nameLabel.fontColor = UIColor.black
nameLabel.position = pad.position
addChild(pad)
addChild(nameLabel)
frameWidthMulti += pad.size.width + 20
i += 1
}
frameHightMulti += 240
}
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
let touchLocation = touches.first?.location(in: self)
if let body = self.physicsWorld.body(at: touchLocation!){
if let z = body.node?.name {
switch z {
case "15":
self.run(SKAction.playSoundFileNamed("15", waitForCompletion: false))
print(z)
case "14":
self.run(SKAction.playSoundFileNamed("14", waitForCompletion: false))
print(z)
case "13":
self.run(SKAction.playSoundFileNamed("13", waitForCompletion: false))
print(z)
case "12":
self.run(SKAction.playSoundFileNamed("12", waitForCompletion: false))
print(z)
case "11":
self.run(SKAction.playSoundFileNamed("11", waitForCompletion: false))
print(z)
case "Tom":
self.run(SKAction.playSoundFileNamed("Tom", waitForCompletion: false))
print(z)
case "Crash":
self.run(SKAction.playSoundFileNamed("Crash", waitForCompletion: false))
print(z)
case "Snap":
self.run(SKAction.playSoundFileNamed("Snap", waitForCompletion: false))
print(z)
case "Chant":
self.run(SKAction.playSoundFileNamed("Chant", waitForCompletion: false))
print(z)
case "Cow":
self.run(SKAction.playSoundFileNamed("Cow", waitForCompletion: false))
print(z)
case "Snare":
self.run(SKAction.playSoundFileNamed("Snare", waitForCompletion: false))
print(z)
case "OpHat":
self.run(SKAction.playSoundFileNamed("OpHat", waitForCompletion: false))
print(z)
case "Hat":
self.run(SKAction.playSoundFileNamed("Hat", waitForCompletion: false))
print(z)
case "Clap":
self.run(SKAction.playSoundFileNamed("Clap", waitForCompletion: false))
print(z)
case "Kick":
self.run(SKAction.playSoundFileNamed("Kick", waitForCompletion: false))
print(z)
default: print("Shit hpns")
}
}
}
}
override func update(_ currentTime: TimeInterval) {
// Called before each frame is rendered
}
}