我是swift和SpriteKit的新手。
我加载了一张图片,我试图将图像放在顶部,但图像是" cutted"在顶部
正如您在图像上看到的那样,窗口最大化,所以它似乎不是缩放问题。 看起来好像"吃掉了#34;前40个像素,我正在使用Iphone 4s仿真器。 如果我改用iphone 6,那就吃掉了#34;顶部有更多像素,是否有"使用顶部像素,如信息栏" ?
我正在使用的代码是,类似于我的代码,我在代码上循环:
options.append(SKSpriteNode(imageNamed:"help"))
//Reload anchor point to top up
options[0].anchorPoint=CGPoint(x:0, y:1)
//try to position the image on the top... BUT IT CUTS MY IMAGE ON THE TOP
options[0].position = CGPoint(x: 0, y: 0)
self.addChild(options[0])
//Set the scene configuration
self.backgroundColor=UIColor(hue: 0.33, saturation: 0.47, brightness: 0.91, alpha: 1)
self.anchorPoint=CGPoint(x: 0, y: 1)
答案 0 :(得分:1)
我认为你通过改变周围的一切东西来使事情变得更加艰难。这使得概念化坐标系变得更加困难。如果你要直接在它上面放置精灵,你应该尽量避免改变场景本身的锚点。
通常,当你想让精灵围绕它的角落而不是它的中心旋转时,你会改变定位点。像这样的东西。如果您只是定位事物,那么保持默认值会更有意义。
这是确保我们的场景具有正确坐标的简便方法
<强> GameViewController.swift 强>
import UIKit
import SpriteKit
class GameViewController: UIViewController {
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
// Configure the view.
let skView = self.view as SKView
skView.showsFPS = true
skView.showsNodeCount = true
/* Sprite Kit applies additional optimizations to improve rendering performance */
skView.ignoresSiblingOrder = true
/* Set the scale mode to scale to fit the window */
let scene = GameScene(size: skView.bounds.size)
scene.scaleMode = .AspectFill
skView.presentScene(scene)
}
override func shouldAutorotate() -> Bool {
return true
}
override func supportedInterfaceOrientations() -> Int {
if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
return Int(UIInterfaceOrientationMask.AllButUpsideDown.rawValue)
} else {
return Int(UIInterfaceOrientationMask.All.rawValue)
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Release any cached data, images, etc that aren't in use.
}
override func prefersStatusBarHidden() -> Bool {
return true
}
}
<强> GameScene.swift 强>
import SpriteKit
class GameScene: SKScene {
override func didMoveToView(view: SKView) {
self.backgroundColor = SKColor.clearColor()
let sprite = SKSpriteNode(color: SKColor.redColor(), size: CGSize(width: 20, height: 20))
// position sprite on top left corner of screen
sprite.position = CGPoint(x: sprite.size.width/2, y: self.size.height - sprite.size.height/2)
self.addChild(sprite)
}
override func update(currentTime: CFTimeInterval) {
/* Called before each frame is rendered */
}
}
尝试以此为出发点。默认情况下,spritekit设置为使用sks文件(关卡编辑器文件)作为场景的模板。我不认为你正在使用它。使用此代码,我们确保在创建场景时使用正确的尺寸初始化场景。