2016-10-09 101 views
3

这是我的代码,我没有使用我的图像InterfaceBakground.jepg的资产目录。相反,我只是将这个2048x1535图片拖到项目中。但形象并没有出现正确的方式。我想让图像显示为背景图像,填满整个屏幕。Swift - 将一个背景图像添加到Spritekit场景

import SpriteKit 
import GameplayKit 
class GameScene: SKScene { 

    var background = SKSpriteNode(imageNamed: "InterfaceBakground.jpeg") 


    override func didMove(to view: SKView) { 
     background.position = CGPoint(x: self.size.height/2, y: self.frame.width/2) 

     self.addChild(background) 
    } 

    override func update(_ currentTime: TimeInterval) { 
     // Called before each frame is rendered 
    } 
} 

我看到这这是我带来一点启发在互联网上:

但如果您使用的是形象,是完全屏幕的大小, 它可能不会出现在你期望。这是因为addChild默认在位置0,0(左下角)添加新的 精灵。如果您想让 使用专门为您的屏幕尺寸设计的图片,您必须 更改其位置。

我的问题是,如何改变位置,所以它适合不同大小的显示设备?提前致谢。

回答

2

试试这个代码:

override func didMove(to view: SKView) { 
    background.position = CGPoint(x: 0, y: 0) 
    background.size.width = self.size.width 
    background.size.height = self.size.height 
    background.anchorPoint = CGPoint(x: 0.5,y: 0.5) 

    self.addChild(background) 
} 

AnchorPoint(0.5,0.5),该中心在其位置上的图像。

+0

非常感谢你,你解决了我的问题。 –

+1

等待,如果这个工作,这意味着你的场景的定位点是0.5,0.5。这意味着除了大小之外,您不必设置任何背景(除了self.size.width和self.size.height,所有变量都是默认变量,这会将精灵缩放为场景大小) – Knight0fDragon

1

我不完全确定,但我认为你可以像这样设置spriteNode的高度和宽度。我也改变了anchorPoint只是要确定:

override func didMove(to view: SKView) { 
     background.size.width = self.size.width 
     background.size.height = self.size.height 
     background.anchorPoint = CGPoint(x: 0, y: 0) 


     self.addChild(background) 
    } 
+0

不,它不会工作。图像不在这个地方。 –

+0

没有定位点,如果他的场景定位点为0,0,那么这将工作 – Knight0fDragon

+0

你是完全正确的,我不确定它,只知道你可以设置它的大小:) – Eric