iOS Sprite Kit教程之场景的切换
iOS Sprite Kit教程之场景的切换
Sprite Kit中切换场景
每一个场景都不是单独存在的。玩家可以从一个场景中切换到另外一个场景中。本小节,我们来讲解场景切换。在每一个游戏中都会使用到场景与场景的切换功能,例如,在街机原始人游戏中,选择关卡这一场景中,可以看到有4关,这四关分别代表了4个场景,如图2.20所示。
图2.20 街机原始的关卡选择
当玩家选择第一关时,就会由选择关卡的场景跳转到第一关的场景中,如图2.21所示。
图2.21 第一关的场景
当玩家选择第二关时,就会由选择关卡的场景跳转到到第二关的场景中,如图2.22所示。
图2.22 第二关的场景
此时,它们就使用了到了场景与场景的切换功能,即当玩家轻拍相应的场景后,就会进入到到所选场景中。
Sprite Kit的单纯的场景切换
单纯的场景切换就是指,在场景与场景进行切换时是没有任何过渡效果出现的。切换时需要使用到presentScene(_ scene: SKScene?)方法。
【示例2-7】以下将以项目2-1为基础,实现在轻拍屏幕后,场景GameScene切换至NewGameScene的功能,具有操作步骤如下:
(1)打开GameViewController.swift文件,在viewDidLoad()方法中的编写代码,实现在运行程序后,第一个显示的场景是GameScene,代码如下:
- override func viewDidLoad() {
- super.viewDidLoad()
- let skView = self.view as SKView
- if(skView.scene == nil){
- skView.showsFPS=true
- skView.showsNodeCount=true
- let scene=GameScene(size: skView.bounds.size) //创建场景
- scene.scaleMode=SKSceneScaleMode.Fill
- skView.presentScene(scene) //显示场景
- }
- }
(2)打开GameScene.swift文件,删除touchesBegan(touches: NSSet, withEvent event: UIEvent)中的代码,在其中编写代码,实现触摸屏幕显示NewGameScene场景的功能,代码如下:
- override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
- var nextScene=NewGameScene(size: self.size) //创建场景
- self.view?.presentScene(nextScene) //显示场景
- }
此时运行程序,会看到如图2.23所示的效果。
图2.23 运行效果
Sprite Kit在具有过渡动画的场景
使用单纯的场景切换会使游戏看起来十分生硬。所以游戏开发者为了解决这一不足之处,在切换过程中为游戏添加了过渡效果,使场景与场景切换更加舒适。这些过渡效果包括淡入淡出、水平关闭等,如表2-3所示。
表2-3 过渡动画
如果想要让一个场景在切换至另一个场景时可以使用到这些过渡动画,需要使用到presentScene(_ scene:SKScene?, transition transition: SKTransition?)方法,其语法形式如下:
- func presentScene(_ scene: SKScene?, transition transition: SKTransition?)
其中,_ scene表示新的场景,transition表示所使用的过渡动画效果。
【示例2-8】以下将在示例2-7的基础上实现在场景与场景切换时,加入一个旧场景从中间向两边打开,新场景从后方向屏幕靠近的过渡动画。具体的的操作步骤如下:
打开GameScene.swift文件,删除touchesBegan(touches: NSSet, withEvent event: UIEvent)中的代码,在其中编写代码,实现触摸屏幕显示NewGameScene场景的功能,代码如下:
- override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
- var nextScene=NewGameScene(size: self.size)
- var doors=SKTransition.doorwayWithDuration(0.5)
- self.view?.presentScene(nextScene, transition: doors) //过渡
- }
此时运行程序,会看到如图2.24所示的效果。
图2.24 运行效果
过渡动画除了可以使用在图2.24中所看到的外,还可以使用其他的效果,如以下的代码就使用了flipHorizontalWithDuration的过渡动画,即以水平中轴线垂直翻转的过渡动画,代码如下:
- override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
- var nextScene=NewGameScene(size: self.size)
- var doors=SKTransition.flipHorizontalWithDuration(2)
- self.view?.presentScene(nextScene, transition: doors) //过渡
- }
此时运行程序,会看到如图2.25所示的效果。
图2.25 运行效果
本文选自:iOS游戏框架Sprite Kit基础教程——Swift版大学霸内部资料,转载请注明出处,尊重技术尊重IT人!
iOS Sprite Kit教程之场景的切换的更多相关文章
- iOS Sprite Kit教程之场景的设置
iOS Sprite Kit教程之场景的设置 Sprite Kit中设置场景 在图2.8所示的效果中,可以看到新增的场景是没有任何内容的,本节将讲解对场景的三个设置,即颜色的设置.显示模式的设置以及测 ...
- iOS Sprite Kit教程之真机测试以及场景的添加与展示
iOS Sprite Kit教程之真机测试以及场景的添加与展示 IOS实现真机测试 在进行真机测试之前,首先需要确保设备已经连在了Mac(或者Mac虚拟机)上,在第1.9.1小节开始,设备就一直连接在 ...
- iOS Sprite Kit教程之滚动场景
iOS Sprite Kit教程之滚动场景 滚动场景 在很多的游戏中,场景都不是静止的,而是滚动的,如在植物大战僵尸的游戏中,它的场景如图2.26所示. 图2.26 植物大战僵尸 在图2.26中,用 ...
- iOS Sprite Kit教程之编写程序以及Xcode的介绍
iOS Sprite Kit教程之编写程序以及Xcode的介绍 Xcode界面介绍 一个Xcode项目由很多的文件组成,例如代码文件.资源文件等.Xcode会帮助开发者对这些文件进行管理.所以,Xco ...
- iOS Sprite Kit教程之编敲代码以及Xcode的介绍
iOS Sprite Kit教程之编敲代码以及Xcode的介绍 Xcode界面介绍 一个Xcode项目由非常多的文件组成,比如代码文件.资源文件等.Xcode会帮助开发人员对这些文件进行管理.所以,X ...
- iOS Sprite Kit教程之申请和下载证书
iOS Sprite Kit教程之申请和下载证书 模拟器虽然可以实现真机上的一些功能,但是它是有局限的.例如,在模拟器上没有重力感应.相机机等.如果想要进行此方面的游戏的开发,进行程序测试时,模拟器显 ...
- iOS Sprite Kit教程之使用帮助文档以及调试程序
iOS Sprite Kit教程之使用帮助文档以及调试程序 IOS中使用帮助文档 在编写代码的时候,可能会遇到很多的方法.如果开发者对这些方法的功能,以及参数不是很了解,就可以使用帮助文档.那么帮助文 ...
- ios游戏开发 Sprite Kit教程:初学者 1
注:本文译自Sprite Kit Tutorial for Beginners 目录 Sprite Kit的优点和缺点 Sprite Kit vs Cocos2D-iPhone vs Cocos2D- ...
- Sprite Kit教程:初学者
作者:Ray Wenderlich 原文出处:点击打开链接 http://www.raywenderlich.com/42699/spritekit-tutorial-for-beginners 转自 ...
随机推荐
- 20145226夏艺华 《Java程序设计》第5周学习总结
教材学习内容总结 第八章 异常处理 语法与继承架构 使用 try.catch Java中所有信息都会被打包为对象,如果愿意,可以尝试(try)捕捉(catch)代表错误的对象后做一些处理 try{ . ...
- c# 生成随机N位数字串(每位都不重复)
/// <summary> /// 生成随机数字窜 /// </summary> /// <param name="Digit">位数</ ...
- 钉钉头像大小设置 阿里cdn尺寸截取参数设置
默认api的接口返回的avatar字段,是原始图片大小字段,尺寸和空间都是原始大小,如果想节省流量或统一尺寸,可以用阿里cdn自带的尺寸截取功能, 比如钉钉头像 avatar字段 返回值为原始大小ht ...
- python collection 中的队列
认识中的队列 在以前的认知里,队列是先进先出,就是一头进,一头出,Queue.而无意间看到了deque 双向队列. 即从该队列的头或者尾部都能插入和移除元素.而起时间复杂度竟然是一样的!O(1),是不 ...
- C++ Qt多线程 TcpSocket服务器实例
服务器: incomming incomming.pro #------------------------------------------------- # # Project created ...
- FPGA设计方法检查表
-----------------------摘自<FPGA软件测试与评价技术> 中国电子信息产业发展研究院 | 编著------------------------------- 文本格 ...
- Python Challenge 第 5 关攻略:peak
# -*- coding: utf-8 -*- # @Time : 2018/9/26 14:03 # @Author : cxa # @File : pickledemo.py # @Softwar ...
- Team Foundation Server 2010服务器安装
本安装指南使用Windows Server 2008企业版为基础,安装Windows Server 2008 SP2(必须),在此操作系统环境上进行TFS2010的安装与配置. 三.系统用户设置 1. ...
- Ubuntu 18.04安装MongoDB 4.0(社区版)
Ubuntu 18.04(虚拟机VirtualBox上),MongoDB 4.0, 听室友说,23点有世界杯决赛呢!可是,孤要写博文的啊!以记录这忙乱的下午和晚间成功安装了一个软件到Linux上.—— ...
- 【前端vue开发】vue开发watch检测的使用
<span style="color:#006600;"><div id="app"> <input type="tex ...