iGe*_*tIt 10 ios sprite-kit swift swift3
我在不同的设备上测试我的应用程序,并意识到精灵运动非常不一致(在某些设备上运行速度比其他设备快得多).我发现这篇文章并按照说明从我所有的SKScene
s中删除了大小参数然后我得到了错误:
fatal error: use of unimplemented initializer 'init(size:)' for class 'SuperGame.PosterScene'
Run Code Online (Sandbox Code Playgroud)
请参阅PosterScene
下面的GameViewController
课程以及调用它的课程.
PosterScene
class PosterScene: SKScene {
override init(){
super.init()
let posterImage = SKSpriteNode(imageNamed: "poster")
posterImage.position = CGPoint(x: self.frame.midX, y: self.frame.midY)
self.addChild(posterImage)
let sequence = SKAction.sequence([ SKAction.wait(forDuration: 3.0), SKAction.run({ self.changeToMainMenuScene() }) ])
self.run(sequence)
}
func changeToMainMenuScene () {
let mainMenuScene = MainMenuScene()
self.view!.presentScene(mainMenuScene)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
Run Code Online (Sandbox Code Playgroud)
GameViewController:
class GameViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
let skView = self.view as? SKView
if skView?.scene == nil {
skView?.showsFPS = true
skView?.showsNodeCount = true
skView?.showsPhysics = true
skView?.ignoresSiblingOrder = false
//starting the game with the Poster Scene
let posterScene = PosterScene()
posterScene.scaleMode = .resizeFill
skView?.presentScene(posterScene)
}
}
override var shouldAutorotate : Bool {
return true
}
override var supportedInterfaceOrientations : UIInterfaceOrientationMask {
if UIDevice.current.userInterfaceIdiom == .phone {
return UIInterfaceOrientationMask.allButUpsideDown
} else {
return UIInterfaceOrientationMask.all
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Release any cached data, images, etc that aren't in use.
}
override var prefersStatusBarHidden : Bool {
return true
}
required init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder)!
}
}
Run Code Online (Sandbox Code Playgroud)
您的代码布局应如下所示。正如您所看到的,我将场景设计为 iPhone 6 的大小。这意味着在所有其他手机上,图像都会缩放(但您仍然会看到所有内容),但在 6 上看起来很完美。在 iPad 上,由于 iPad 的比例为 3:4 而不是 9:16,图像的顶部和底部将各被截断 12.5%
class GameViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
let skView = self.view as? SKView
if skView?.scene == nil {
skView?.showsFPS = true
skView?.showsNodeCount = true
skView?.showsPhysics = true
skView?.ignoresSiblingOrder = false
//starting the game with the Poster Scene
let posterScene = PosterScene(size:CGSize(width:375,height:667))
posterScene.scaleMode = .aspectFill
skView?.presentScene(posterScene)
}
}
override var shouldAutorotate : Bool {
return true
}
override var supportedInterfaceOrientations : UIInterfaceOrientationMask {
if UIDevice.current.userInterfaceIdiom == .phone {
return UIInterfaceOrientationMask.allButUpsideDown
} else {
return UIInterfaceOrientationMask.all
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Release any cached data, images, etc that aren't in use.
}
override var prefersStatusBarHidden : Bool {
return true
}
required init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder)!
}
}
Run Code Online (Sandbox Code Playgroud)
和
class PosterScene: SKScene {
override init(size:CGSize){
super.init(size:size)
self.anchorPoint = CGPoint(x:0.5,y:0.5) //let's put 0,0 at the center of the screen
let posterImage = SKSpriteNode(imageNamed: "poster")
posterImage.position = CGPoint.zero
self.addChild(posterImage)
let sequence = SKAction.sequence([ SKAction.wait(forDuration: 3.0), SKAction.run({ self.changeToMainMenuScene() }) ])
self.run(sequence)
}
func changeToMainMenuScene () {
let mainMenuScene = MainMenuScene()
self.view!.presentScene(mainMenuScene)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
954 次 |
最近记录: |