
3.5 删除精灵
在一个游戏中有些精灵可能在游戏开始是使用到,但是在游戏中间或者末尾就不再需要这些精灵了,此时就需要将这些精灵从场景中及时地删除。本节将为开发者讲解两种删除精灵的方法:一种是删除指定的精灵;一种是删除所有的精灵。
3.5.1 删除指定的精灵
删除指定的精灵是指如果不需要某一精灵就将此精灵进行删除。想要实现此功能,需要使用到removeFromParent()方法,其语法形式如下:
func removeFromParent()
【示例3-13】以下将使用removeFromParent()方法删除显现在场景中的某一个精灵。具体的操作步骤如下:
(1)创建一个Game类型的项目,命名为3-9。
(2)添加图像1.png、2.png到创建项目的Supporting Files文件夹中。
(3)将设备的方向设置为水平方向。
(4)打开GameScene.swift文件,将此文件中多余的代码删除,然后编写新的代码,此代码实现的功能是显示两个精灵到场景中,并删除其中的一个精灵。代码如下:
import SpriteKit
class GameScene: SKScene {
override func didMoveToView(view: SKView) {
var sprite1=SKSpriteNode(imageNamed:"1.png")
sprite1.position = CGPointMake(300,403)
sprite1.setScale(0.5)
self.addChild(sprite1)
var sprite2=SKSpriteNode(imageNamed:"2.png")
sprite2.position = CGPointMake(750,403)
sprite2.setScale(0.5)
self.addChild(sprite2)
sprite2.removeFromParent() //删除创建的第二个精灵对象
}
}
此时运行程序,会看到如图3.29所示的效果。

图3.29 运行效果
3.5.2 删除所有精灵
如果开发者不需要场景中的所有元素该怎么做呢?还是使用removeFromParent()方法进行逐个的删除吗?这里我们需要使用到一个新的删除方法,即removeAllChildren()方法,此方法可以将场景中的所有精灵进行删除,其语法形式如下:
func removeAllChildren()
【示例3-14】以下将使用removeAllChildren()方法删除显现在场景中的所有的精灵。具体的操作步骤如下:
(1)创建一个Game类型的项目,命名为3-10。
(2)添加图像1.png、2.png到创建项目的Supporting Files文件夹中。
(3)将设备的方向设置为水平方向。
(4)打开GameScene.swift文件,将此文件中多余的代码删除,然后编写新的代码。此代码实现的功能是显示两个精灵到场景中,然后再将场景中的所有精灵删除。代码如下:
import SpriteKit
class GameScene: SKScene {
override func didMoveToView(view: SKView) {
var sprite1=SKSpriteNode(imageNamed:"1.png")
sprite1.position = CGPointMake(300,403)
sprite1.setScale(0.5)
self.addChild(sprite1)
var sprite2=SKSpriteNode(imageNamed:"2.png")
sprite2.position = CGPointMake(750,403)
sprite2.setScale(0.5)
self.addChild(sprite2)
removeAllChildren() //删除所有的精灵对象
}
}
此时运行程序,会看到如图3.30所示的效果。

图3.30 运行效果