标签:精灵 效果 开发 hello world sprite
上文讲到咱们的小精灵(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 !!!
有话要说!!
关于一些函数如何理解,对于英语好或者不好的同志,我始终都建议仔细读一遍函数名字,用用有道拉,谷歌翻译拉,会加速你对函数的理解,因为太直白了。假如死记硬背,或者用到时候再去搜,当然也是可以的,熟能生巧嘛。不过新手学习过程时,我建议放慢一下自己的脚步,对于代码阅读方式稍作改变最佳!囫囵吞枣,填鸭式不是很推荐。写这个系列文章时,我也是刚起步学习,因此我和大多数新手是同一起跑线的。
标签:精灵 效果 开发 hello world sprite
原文地址:http://blog.csdn.net/colouful987/article/details/44097099