首页 > 代码库 > 一步一步教你用Swift开发俄罗斯方块:No.2 准备工作

一步一步教你用Swift开发俄罗斯方块:No.2 准备工作

如果你已经成功建好了工程,运行之后你会发现是个小飞机的程序,如果我没记错的; 这个程序是spin-the-bottle:Space Edition,但是可惜的是,我们并不需要这些东西,我们需要一个干净的模板,所以,我们需要首先清理下战场,然后把我们需要用到的一些资源放进来。

打开项目导航栏,如下图中圆圈内的图标,或者点击? + 1:

技术分享

右键点击GameScene.sks,选择delete

技术分享

当系统询问的时候,选择move to trash

技术分享

接下来点击image.xcassets,然后删除spaceship图片

技术分享

Trimming The Fat

接下来,我们来删除代码中无用的代码,彻底清理出战场:

首先开始清理 GameScene.swift:

技术分享

技术分享技术分享

技术分享

注意,

图片中的红色的部分是我们要删除的内容,在之后的教程中,‘-‘号标红的部分是要删除的内容‘+‘号标绿的部分是我们要添加的内容

接下来是GameViewController.swift,这里我们需要删除更多的内容

技术分享

技术分享技术分享技术分享

技术分享技术分享

技术分享

技术分享

The Sights And Sounds Of Swiftris

然后我们需要添加程序中用得到的图片和声音文件了,从 这里 下载必要的图片和声音文件,把它保存到桌面或者download文件或者其他任意文件,但是不要放到你的工程文件夹中,解压缩之后,

1. 把整个 sounds文件夹拖入到项目的导航栏中,放置于supporting files文件之上,确保一定要选择上copy items if needed,如下图所示:

技术分享


2. 重复同样的步骤,将Sprits.atlas文件夹拖入导航栏

3. 在Images文件夹下面所有的图片选中,然后在导航栏中打开support files,将选中的所有图片直接拖进去,再次确认 copy items if needed复选框一定要选中

4. 最后一步,打开images.xcassets文件,然后选中AppIcon,分别把解压之后的3个29pt。40pt 和60pt的图片拖到相应的位置

到此为止,所有的图片和声音等资源文件已经加载完毕,让我们开始coding吧!

Start At The Back

开发过iOS的应该对Scene和ViewController不陌生,Scene,顾名思义就是我们能看到的显示在界面上的屏幕,相当于一个舞台;

在这个工程中,GameScene.swift将显示俄罗斯方块,显示背景,显示游戏面板,更远一点,还将用来控制声音等等;

GameViewController.swift,从controller就可以理解,它就是一个控制器,相当于MVC模式中的C,控制用户和后台逻辑之间的交互等等。

下面到了写代码的时候了,我再一次把原教材中的句子搬上来:

技术分享

技术分享技术分享

技术分享

feel for the language in your fingers! 

技术分享技术分享

技术分享

声明:

前面的加号不是真的要打上去的加号,而是告诉大家,这行代码是需要我们手动添加上去的

坐标系

SpriteKit是基于OpenGL的,因此它的坐标系统也是iOS原生的cocoa 坐标系,  0,0 在SpriteKit中就是左下角。Swiftris将从上往下,所以,我们的anchor point将从左上角开始,也就是(0,1.0)。 这里可以看到,其实这个是个百分比,坐标的范围是从0到1的,而(0.5,0.5)就是屏幕的中间

let和var

通俗点讲: let是一个常亮,相当于java里面的final; 而var相当于一个变量。
举个来自stackoverflow中的很清晰的例子:
技术分享
下面这个例子应该更容易懂:
技术分享
扛得住么?接下来我们来看viewController文件:
技术分享

技术分享

?和!

代码中的第一行表示GameScence不是一个optional的变量。
什么是optional?就是这个变量可以是nil的,也可以不是。

Swift typically enforces instantiation either in-line where you declare the variable or during the initializer, init…. In order to circumvent this requirement we‘ve added an ! after the type.

Swift语言使用var定义变量,但和别的语言不同,Swift里不会自动给变量赋初始值,也就是说变量不会有默认值,所以要求使用变量之前必须要对其初始化。如果在使用变量之前不进行初始化就会报错:
技术分享

更多详细的解释直接看这个帖子吧:http://www.ruanman.net/swift/learn/4569.html


一步一步教你用Swift开发俄罗斯方块:No.2 准备工作