2013-11-05 177 views
3

因爲目前這是不可能的顏色設置爲SKSceneclearColor的,通過做如何設置SKScene的背景圖片?

-(id)initWithSize:(CGSize)size { 
    if (self = [super initWithSize:size]) { 


     self.backgroundColor = [SKColor clearColor]; 

    } 
    return self; 
} 

正如在這裏看到:LINK

然後怎能設置背景圖片的SKScene ?請儘可能具體,示例代碼將非常棒!

回答

5

使用在場景中居中的SKSpriteNode

-(id)initWithSize:(CGSize)size {  
    if (self = [super initWithSize:size]) { 
     // Replace @"Spaceship" with your background image: 
     SKSpriteNode *sn = [SKSpriteNode spriteNodeWithImageNamed:@"Spaceship"]; 

     sn.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame)); 
     sn.name = @"BACKGROUND"; 

     [self addChild:sn]; 
    } 
    return self; 
} 
+0

這是工作部分,因爲它實際上是伸展我的形象,不知道爲什麼它會做這個? – vzm

+0

如果您的圖像被稱爲Spaceship.png,它會將圖像拉伸到視網膜顯示的兩倍。你需要一個名爲[email protected]的文件來顯示視網膜。這個文件不應該被拉伸。 – godel9

+0

此外場景還有一個scaleMode屬性,用於定義場景的內容如何縮放。 – LearnCocos2D

0

該解決方案幫助我:

把你的代碼,調用/添加從viewDidLoad現場viewWillLayoutSubviews

- (void)viewWillLayoutSubviews 
    { 
    [super viewWillLayoutSubviews]; 

    // Configure the view. 
    SKView * skView = (SKView *)self.view; 
    skView.showsFPS = YES; 
    skView.showsNodeCount = YES; 

    // Create and configure the scene. 
    SKScene * scene = [MyScene sceneWithSize:CGSizeMake(skView.bounds.size.width*2,skView.bounds.size.height*2)]; 
    scene.scaleMode = SKSceneScaleModeAspectFill; 

    // Present the scene. 
    [skView presentScene:scene]; 
} 

據我所知,原因是skView.bounds是不同的當視圖即將被佈置以及視圖被顯示時。一般來說,我發現heightwidth被切換。

,我發現這個解決方案在這裏: Background image size Sprite Kit Game

0

這裏有一個更優雅的方式,以確保無論你有什麼解決現在或將來,你的形象將是你的背景的大小。

如果您要支持橫幅廣告,您必須將高度減少50或32個設備單位,然後將位置向上/向下移動25或16像素(縱向或橫向)。 如果你想同時支持,我還建議有一個不同的景觀和肖像的圖像,或者你將不得不開始信箱。

在現場...

SKSpriteNode* background = [SKSpriteNode spriteNodeWithImageNamed:@"myBackground"]; 
background.size = self.frame.size; 
background.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame)); 
[self addChild:background]; 
0

SWIFT版本4:

let background = SKSpriteNode(imageNamed: "CheckIcon") 
    background.size = frame.size 
    background.position = CGPoint(x: frame.midX, y: frame.midY) 
    addChild(background)