Xcode6 Swift。 arc4random 使用带纹理的数组
Xcode6 Swift. arc4random using array with textures
我有一个 spriteNode,它有一个黑色圆圈的默认纹理,我把它放在屏幕的中央。我还有一个包含 4 个纹理的数组。我想要做的是当我在屏幕上单击时,中心的黑色圆圈从数组中随机选择一个 SKTexture 并更改为设置纹理。我一直在思考 didBeginTouches 中的代码行,但我一直在思考如何真正执行这个想法。谢谢你的帮助。 :)
var array = [SKTexture(imageNamed: "GreenBall"), SKTexture(imageNamed: "RedBall"), SKTexture(imageNamed: "YellowBall"), SKTexture(imageNamed: "BlueBall")]
override func didMoveToView(view: SKView) {
var choiceBallImg = SKTexture(imageNamed: "BlackBall")
choiceBall = SKSpriteNode(texture: choiceBallImg)
choiceBall.position = CGPointMake(self.frame.size.width / 2, self.frame.size.height / 2)
self.addChild(choiceBall)
}
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
choiceBall.texture = SKTexture(imageNamed: arc4random(array))
//error: Cannot assign a value of type 'SKTexture!' to a value of type 'SKTexture?'
}
差不多了,把你的touchesBegan
改成这样:
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
let randomIndex = Int(arc4random_uniform(UInt32(array.count)))
choiceBall.texture = array[randomIndex]
}
第一行使用 arc4random_uniform
函数生成一个从 0 到 array-1 大小的随机数。我们还需要将数组的大小转换为无符号整数,因为 Swift 非常严格(这是理所当然的)。然后我们将它转换回整数并使用它来访问您已经在数组中创建的纹理。
我有一个 spriteNode,它有一个黑色圆圈的默认纹理,我把它放在屏幕的中央。我还有一个包含 4 个纹理的数组。我想要做的是当我在屏幕上单击时,中心的黑色圆圈从数组中随机选择一个 SKTexture 并更改为设置纹理。我一直在思考 didBeginTouches 中的代码行,但我一直在思考如何真正执行这个想法。谢谢你的帮助。 :)
var array = [SKTexture(imageNamed: "GreenBall"), SKTexture(imageNamed: "RedBall"), SKTexture(imageNamed: "YellowBall"), SKTexture(imageNamed: "BlueBall")]
override func didMoveToView(view: SKView) {
var choiceBallImg = SKTexture(imageNamed: "BlackBall")
choiceBall = SKSpriteNode(texture: choiceBallImg)
choiceBall.position = CGPointMake(self.frame.size.width / 2, self.frame.size.height / 2)
self.addChild(choiceBall)
}
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
choiceBall.texture = SKTexture(imageNamed: arc4random(array))
//error: Cannot assign a value of type 'SKTexture!' to a value of type 'SKTexture?'
}
差不多了,把你的touchesBegan
改成这样:
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
let randomIndex = Int(arc4random_uniform(UInt32(array.count)))
choiceBall.texture = array[randomIndex]
}
第一行使用 arc4random_uniform
函数生成一个从 0 到 array-1 大小的随机数。我们还需要将数组的大小转换为无符号整数,因为 Swift 非常严格(这是理所当然的)。然后我们将它转换回整数并使用它来访问您已经在数组中创建的纹理。