1
嗨,夥計們!使用靜態方法和屬性創建SKSpriteNode
我用SpriteKit框架編寫遊戲,我嘗試使用多種配置來創建對象,所以我必須使用static來避免init方法和一些帶解碼器的樣板代碼。所以我寫了代碼,但我不知道這個代碼是否可以用於創建目的,但是這段代碼實際上工作正常。
class Island: SKSpriteNode {
static func populateIsland(at point: CGPoint) -> SKSpriteNode {
let islandImageName = configureIslandName()
let island = SKSpriteNode(imageNamed: islandImageName)
island.setScale(randomScaleFactor)
island.position = point
return island
}
fileprivate static func configureIslandName() -> String {
let distribution = GKRandomDistribution(lowestValue: 1, highestValue: 4)
let randomNumber = distribution.nextInt()
let imageName = "pic" + "\(randomNumber)"
return imageName
}
fileprivate static var randomScaleFactor: CGFloat {
let distribution = GKRandomDistribution(lowestValue: 7, highestValue: 10)
let randomNumber: CGFloat = CGFloat(distribution.nextInt())/10
return randomNumber
}
}
所以實際的例子是:
let island = Island.populateIsland(at: CGPoint(x: 100, y: 100))
謝謝你的建議,提前!
是的,謝謝。你是對的,我只是做了一個快速的改變,把它張貼在這裏,所以對我有點遺憾。現在我想着如何將實例方法附加到實例本身,因爲它只是SKSpriteNode :) –
@ wm.p1us你是什麼意思「攻擊實例方法來實例本身」?你的意思是「附加」?實例方法本身附加到實例上,你不需要做任何事情。 – Sweeper
對。這裏應該附上當然。 –