2016-04-23 71 views
0

我正在開發一個使用Swift的小遊戲& SpriteKit。當我爲「重新啓動」按鈕添加SKSpriteNode時,它不能正確縮放。SKSpriteNode不能正常縮放

重新啓動按鈕的大小是100px的高度和寬度。如果我沒有設置比例,它將覆蓋整個屏幕並使屏幕顯示爲白色。我發現如果我只將setScale設置爲0.005而不是它出現在屏幕上,但尺寸不合適。

import Foundation 
import SpriteKit 

class EndScene: SKScene { 

    var restartBtn = SKSpriteNode() 


    override func didMoveToView(view: SKView) { 

     background() 
     restartGame() 

    } 


    func restartGame() { 

     restartBtn = SKSpriteNode(imageNamed: "restartBtn") 
     restartBtn.setScale(0.005) 
     restartBtn.position = CGPoint(x: self.size.width/2, y: self.size.height/4) 
     restartBtn.zPosition = 1 

     self.addChild(restartBtn) 
    } 


    func background() { 

     let bkg = SKSpriteNode(imageNamed: "Background") 
     bkg.size = self.frame.size 
     bkg.position = CGPoint(x: self.frame.width/2, y: self.frame.height/2) 
     bkg.zPosition = -2 

     self.addChild(bkg) 
    } 

} 

下面是這段代碼的輸出, Restart Button Output

UPDATE

我把scene!.scaleMode = .AspectFill右內didMoveToView功能,並在適當的渲染SpriteNode的形狀幫助。但仍然需要setScale(0.001)才能使Restart按鈕的大小適合屏幕。任何人都可以協助我仍然缺少哪些代碼行嗎?

回答

0

而不是使用.setScale嘗試使用restartBtn.size = CGSize的(寬度:50,高度:50)

這將使用雪碧包的大小調整公式。

+0

我已經嘗試過,但它沒有給出任何不同的結果。要使用CGSize,我必須將寬度和高度設置爲'0.1',以使其在屏幕上可見,並且仍呈橢圓形而不是圓形。 – Haadi

0

我也遇到過這個問題。它發生在我忘記指定場景的大小時。我只是寫了init而不是調用initWithSize,場景開始按x1000縮小所有節點。節點是可見的,但它們需要的比例爲0.001