iOS SpriteKit:调整SKSpriteNode的大小

时间:2014-09-29 12:41:03

标签: ios iphone swift resize sprite-kit

我有一张图像mySprite@2x.png它的尺寸为1240 x 1240像素或620 x 620点。 我想将它用于所有iPhone型号(不同的屏幕尺寸)。我只想要它调整大小,但我无法弄清楚如何正确地做到这一点。

以下是出了什么问题:

let sprite = SKSpriteNode(imageNamed:"mySprite")
sprite.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame))

println(sprite.size)
sprite.size = CGSize(width: 300, height: 300)

println(sprite.size)
println(self.view?.frame.size)
self.addChild(sprite)

以下是iPhone 4S测试的日志:

(620.0,620.0)
(300.0,300.0)
Optional((480.0,320.0))

日志看起来不错,但在屏幕上我可以看到图像比iPhone 4S宽度更大。它的宽度和高度(它是一个正方形)几乎与iPhone 4屏幕高度(约440点)一样高。

场景scaleMode为AspectFill。 场景和精灵xScaleyScale = 1.0

我不明白我做错了什么。

1 个答案:

答案 0 :(得分:1)

根据视图框架中的日志消息,宽度为480,高度为320,表示您的视图处于横向模式。

如果您的SKScene的大小设置为纵向模式下的视图大小,则使用scaleMode AspectFill会将场景的宽度从320扩展到480.

这意味着您的SKSpriteNode似乎是450pts而不是300pts。

您可能想要使用SKSceneScaleModeResizeFill代替?