09.spritekit征程——场景的切换

09.spritekit征程——场景的切换

上文讲到咱们的小精灵(sprite)在场景中“舞动”,枯燥的学习似乎有了那么点意思。我相信各位看官都是想自己开发一款独有的游戏,自然就少不了绚丽的效果以及开场。因此今天咱们来对场景之间的切换进行入门。

Sprite Kit对场景之间的切换简单到爆。在下面的例子当中,我们将创建第二个场景来学习其他游戏特性。前面的动画效果最终会导致“Hello World”文本从屏幕淡出,但这仅仅只发生在当然场景中。今天我们的任务是当文本消失后,创建一个场景,然后进去切换过渡。你要问我原来的Hello Scene怎么办?无情抛弃掉吧!

创建太空船场景

  1. 闲话少说,新建一个类命名为SpaceshipScene,当然又是继承于SKScene
  2. 接下来添加一些基本代码来实现场景中的内容,代码和原先的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
    }
    
  3. 创建完第二个场景,我们来谈下感受,SkScene中使用didMoveToView方法和使用ViewDidLoad()同样频繁,因为它们要做的事情都是必须预先设置好的。至于那个标志位,只是确保只执行一次代码。
  4. 现在回到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)
    })
    
  5. Build and run !!!

有话要说!!

关于一些函数如何理解,对于英语好或者不好的同志,我始终都建议仔细读一遍函数名字,用用有道拉,谷歌翻译拉,会加速你对函数的理解,因为太直白了。假如死记硬背,或者用到时候再去搜,当然也是可以的,熟能生巧嘛。不过新手学习过程时,我建议放慢一下自己的脚步,对于代码阅读方式稍作改变最佳!囫囵吞枣,填鸭式不是很推荐。写这个系列文章时,我也是刚起步学习,因此我和大多数新手是同一起跑线的。

时间: 2024-10-30 09:12:04

09.spritekit征程——场景的切换的相关文章

08.spritekit征程——场景中的动画

08.spritekit征程--场景中的动画 接着上文,显示静态的文字是否无法满足你的欲望,那么本文的内容绝对让你热血沸腾,记得小时候爱看动画,现在有这么一个机会让你来创作是不是想想都有点小激动呢. 动画的核心呢就是actions.在Sprite Kit 中的大多数action 其实就是改变节点(Node)的属性罢了.假如你还不了解节点是什么,建议好好谷歌百度下,虽说都是最基础的知识,但是我认为"万丈大楼平地起",打好基础很是关键,另外就是坚持. 关于节点: 节点是最简单也是最难理解的

11.spritekit征程——结尾篇之节点的狂欢

11.spriteKit征程--结尾篇之节点的狂欢 本文是sprite kit征程的结尾篇,当然这仅仅还只是开始.另外我已经完成一款sprite Kit的教学软件.希望多多支持. 小节目录: 01.关于sprite_kit 02.SpriteKit前瞻之视图场景 03.sprite_kit前瞻之节点树 04.sprite_kit前瞻之纹理 05.sprite_kit前瞻之节点的动画 06.sprite_kit前瞻之创造"真实"的世界 07.spritekit征程--创建第一个场景 08

07.spritekit征程——创建第一个场景

07.SpriteKit征程--创建第一个场景 Sprite Kit 的内容被放置于窗口当中,即那些可视内容.Sprite Kit 之中的内容由SKView 类进行渲染(注:一般将普通的UIView转换成SKView是这么写的let skView = self.view as SKView ).由SKView 对象渲染的内容称之为场景,也就是Scene,它隶属于SKScene类.场景作为一个root node 又继承于UIResponder类,因此它能够响应用户的输入,当然还有其他丰富的内容使得

用jQuery.touchSwipe插件实现手机端场景滑动切换效果

使用jQuery的touchSwipe插件监听触摸滑动事件,结合css3实现手机端场景滑动切换效果.最好在手机端测试代码,也可以在PC端用鼠标点击模拟滑动. 1.html代码: <div class="container"> <div class="page page0 page_current"> <h1>你好,我是0号屏幕,第一屏,鼠标单击向下/向上拖动</h1> </div> <div clas

3.cocos2dx之Menu,通过menu来实现场景的切换

 1 头文件 TMenu.h #ifndef __TMENU_H__ #define __TMENU_H__ #include "cocos2d.h" USING_NS_CC; class TMenu :public CCLayer { public: static CCScene * scene(); CREATE_FUNC(TMenu); bool init(); CCMenu * menu; void menuCallback(CCObject * sender); void

cocos2d-x场景效果切换

Cocos2d-x提供了很多场景间切换的效果 1.使用方法: ccTime t = 1.2;    CCScene * pScene = CCScene::node();    CCLayer *pLayer = new book_page1();    pLayer->autorelease();    pScene->addChild(pLayer);    CCTransitionFade* transitionScene = CCTransitionFade::transitionWi

cocos2dx 场景的切换

我们知道cocos2dx中可以由多个场景组成,那么我是如何来切换场景的呢 首先我们先新建一个新的场景类,我推荐的方式是,在你工程的目录中找到一个classes的文件夹,里面有AppDelegate.cpp和AppDelegate.h还有HelloWorldScene.cpp和HelloWorldScene.h,我们需要做的就是把HelloWorldScene.cpp和HelloWorldScene.h复制在当前文件夹下,然后把HelloWorldScene中一些东西修改 例如我要新建一个Game

iOS Sprite Kit教程之场景的切换

iOS Sprite Kit教程之场景的切换 Sprite Kit中切换场景 每一个场景都不是单独存在的.玩家可以从一个场景中切换到另外一个场景中.本小节,我们来讲解场景切换.在每一个游戏中都会使用到场景与场景的切换功能,例如,在街机原始人游戏中,选择关卡这一场景中,可以看到有4关,这四关分别代表了4个场景,如图2.20所示. 图2.20  街机原始的关卡选择 当玩家选择第一关时,就会由选择关卡的场景跳转到第一关的场景中,如图2.21所示. 图2.21  第一关的场景 当玩家选择第二关时,就会由

【Cocos2dx】新建场景、场景的切换、设置启动场景与菜单的新建

这是Cocos2dx最简单的部分.主要是体现对场景的操作,其实这东西就是Flash的舞台,安卓的Activity,WIN32窗体程序的Framework窗体,网页的body,反正就是对那个容纳各种东西的大容器进行操作,爱怎么叫就怎么叫. 用一个例子说明这个问题,将会做出如下的效果,在官方提供的Helloworld加一个场景Scene1,Scene1里面就摆一个可以切回Helloworld的按钮,同时设置这个Scene1为启动程序(游戏)的初始场景.同时对原本Helloworld场景的关闭按钮进行