2
我想開發一個遊戲,需要使用SpriteKit和Swift在所有場景中具有共同背景。由於背景是常見的,它的行動必須是連續的,我創建的SKSpriteNode
這樣一個自定義的單子類:自定義SKSpriteNode addChild不工作
class BackgroundNode: SKSpriteNode {
static let sharedBackground = BackgroundNode()
private init()
{
let texture = SKTexture(imageNamed: "Background")
super.init(texture: texture, color: UIColor.clearColor(), size: texture.size())
addActors()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
private func addActors() {
addClouds()
}
private func addClouds() {
addCloud1()
}
private func addCloud1() {
let cloud1 = SKSpriteNode(imageNamed: "Cloud1")
cloud1.size = CGSizeMake(0.41953125*self.size.width, 0.225*self.size.height)
cloud1.position = CGPointMake(-self.size.width/2, 0.7*self.size.height)
self.addChild(cloud1)
let moveAction = SKAction.moveTo(CGPointMake(self.size.width/2, 0.7*self.size.height), duration: 20)
cloud1.runAction(SKAction.repeatActionForever(moveAction))
}
}
而且從GameScene
類我加入這個節點這樣當前視圖:
class GameScene: SKScene {
override func didMoveToView(view: SKView) {
BackgroundNode.sharedBackground.size = CGSizeMake(self.size.width, self.size.height)
BackgroundNode.sharedBackground.position = CGPointMake(self.size.width/2, self.size.height/2)
addChild(BackgroundNode.sharedBackground)
}
}
背景圖像顯示正確,但未添加雲。截至上面的代碼雲應該出現在屏幕之外,然後再通過另一邊緣進入屏幕,但爲了驗證它是否被添加,我甚至嘗試將雲添加到屏幕的中心,而沒有任何動畫。雲仍沒有出現。這裏可能是什麼問題?以及如何解決它?
編輯
我想通了,孩子卻越來越增加,但獲取添加,並通過一些遠點屏幕上方移動。我還發現,它可能與雲的錨點有關,但無論我設置哪個值作爲錨點,雲總是保留在屏幕的右上角。我可以做些什麼關於錨點,使雲顯示,因爲它應該(考慮左下角爲(0,0)是我想要的)
也許你應該標記您的答案解決了嗎? – Stefan
需要一點時間才能將自己的答案標記爲已解決。 :-) –