09.spritekit征程——场景的切换
上文讲到咱们的小精灵(sprite
)在场景中“舞动”,枯燥的学习似乎有了那么点意思。我相信各位看官都是想自己开发一款独有的游戏,自然就少不了绚丽的效果以及开场。因此今天咱们来对场景之间的切换进行入门。
Sprite Kit
对场景之间的切换简单到爆。在下面的例子当中,我们将创建第二个场景来学习其他游戏特性。前面的动画效果最终会导致“Hello World”文本从屏幕淡出,但这仅仅只发生在当然场景中。今天我们的任务是当文本消失后,创建一个场景,然后进去切换过渡。你要问我原来的Hello Scene
怎么办?无情抛弃掉吧!
创建太空船场景
- 闲话少说,新建一个类命名为
SpaceshipScene
,当然又是继承于SKScene
。 - 接下来添加一些基本代码来实现场景中的内容,代码和原先的
hello scene
差不多。//省略上面一些东东 纯手打手误处 请见谅 private contentCreated:Bool = false override func didMoveToView(view: SKView) { //判断是否是第一次创建 if(!self.contentCreated){ //置位 以后就不会在执行这里的代码拉 self.contentCreated = true //这个方法还要添加新内容 createSceneContents() } } func createSceneContents(){ self.backgroundColor = SKColor.blackColor() self.scaleMode = .AspectFit }
- 创建完第二个场景,我们来谈下感受,
SkScene
中使用didMoveToView
方法和使用ViewDidLoad()
同样频繁,因为它们要做的事情都是必须预先设置好的。至于那个标志位,只是确保只执行一次代码。 - 现在回到
HelloScene.swift
中,我们要略微修改下原先的代码,之前是这样的,一旦你点击屏幕,hello world
文本就进行我们设计好的动画,最后被移除,执行方式使用runAction
。现在我们的目的是执行完动作之后切换到另外一个场景,因此我们换一个执行方式为runAction(action: , completion: )
,一瞥就知道不同之处是多了后面一个completion,这是一个闭包(是一个函数,你暂时理解为一个函数吧),即前面动作执行完之后要进行什么操作,一般我们会赋值nil
,即完成动作后啥也不要干。而现在的任务就是替代nil
,换成我们设定的任务:创建场景,然后切换。代码如下:hello.runAction(moveSequence,completion:{ //实例化一个宇宙飞船场景实例!! let spaceshipScene = SpaceshipScene() //创建一个新的场景过渡方式 let doors = SKTransition.doorsOpenVerticalWithDuration(0.5) //呈现 self.view.presentScene(spaceshipScene, transition: doors) })
- Build and run !!!
有话要说!!
关于一些函数如何理解,对于英语好或者不好的同志,我始终都建议仔细读一遍函数名字,用用有道拉,谷歌翻译拉,会加速你对函数的理解,因为太直白了。假如死记硬背,或者用到时候再去搜,当然也是可以的,熟能生巧嘛。不过新手学习过程时,我建议放慢一下自己的脚步,对于代码阅读方式稍作改变最佳!囫囵吞枣,填鸭式不是很推荐。写这个系列文章时,我也是刚起步学习,因此我和大多数新手是同一起跑线的。
时间: 2024-10-30 09:12:04