每当用户触摸deckOfCards时,我想重复显示两张游戏卡中的一张。
到目前为止,我让它工作过一次,但当我再次点击deckOfCards时,卡不会改变。尝试使用10个或更多的卡名,也不起作用。

class GameScene: SKScene {

let cardname = ["card2", "ace"]
let randomNumber = Int(arc4random_uniform(13))
var deckOfCards = SKSpriteNode()
var yourCard = SKSpriteNode()

override func didMove(to view: SKView) {
    deckOfCards = self.childNode(withName: "deckOfCards") as! SKSpriteNode
    yourCard = self.childNode(withName: "yourCard") as! SKSpriteNode
}

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    self.view?.endEditing(true)

    for touch: AnyObject in touches {

        let location = touch.location(in: self)
        let node : SKNode = self.atPoint(location)
        if node.name == "deckOfCards" {
            yourCard.texture = SKTexture(imageNamed: "\(cardname[randomNumber])")
        }
    }
}

最佳答案

随机数是touchesBegan之外的常数。它永远不会改变。把它放在touchesBegan里面。

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    self.view?.endEditing(true)

    for touch: AnyObject in touches {
        let location = touch.location(in: self)
        let node = self.atPoint(location)
        let randomNumber = Int(arc4random_uniform(13))

        if node.name == "deckOfCards" {
            yourCard.texture = SKTexture(imageNamed: "\(cardname[randomNumber])")
        }
    }
}

09-11 19:54
查看更多