SKScene 场景类
前缀为SK是SpriteKit的缩写。
SKScene是SpriteKit树节点(SKNode)中的根节点,SKScene使得页面有了动效,特效,使得页面变得生动活泼。它有点像UIScorllView中的content。想要在页面上看到一个scene 需要使用sKView.presentScene。
SKScene对象的初始化
#从文件中初始化 Xcode's File menu > New... > File > (choose your platform tab) > SpriteKit Scene.
[init(fileNamed:)]
//
let scene =SKScene(fileNamed:"MyScene")
skView.presentScene(scene)
----------------------------------------------------------------
#给定一个大小来初始化
init(size:[CGSize] #这里的size 不是页面的大小,是可见区域的大小。
size 的(0,0)#点在屏幕的左下角。默认的size为(1024 * 768)
SKScene在View 中的显示填充模式
属性名称 | 说明 |
---|---|
SKSceneScaleModeFill | 默认模式,场景全部显示出来,会导致场景变形 |
SKSceneScaleModeAspectFill | 场景比例不变,填充整个视图,会显示部分场景 |
SKSceneScaleModeAspectFit | 场景比例不变,全部显示在视图当中 |
SKSceneScaleModeResizeFill | 场景与视图的尺寸相匹配 |
note:将scaleMode属性设置为SKSceneScaleMode.resizeFill。SpriteKit会自动调整场景的大小(size 属性)修改了size 属性系统会调用 didChangeSize(_:) 可以在这个方法中添加修改了大小后的逻辑。比如边缘检测,资源文件的替换等
SKScene在View 中的可见范围
改变锚点anchorPoint 可以改变可见区域。
camera默认为nil,当设置了camera节点后锚点不起作用,锚点为默认左下角。
let cameraNode = SKCameraNode()
cameraNode.position = CGPoint(x: scene.size.width / 2,
y: scene.size.height / 2)
scene.addChild(cameraNode)
scene.camera = cameraNode
SKScene的事件改变
func sceneDidLoad()
··场景已经加载
func didChangeSize(CGSize)
··场景大小改变
func willMove(from: SKView)
··场景将要移除
func didMove(to: SKView)
··场景已经移除
SKScene的刷新帧事件循环
note:设置delegate
Responding to Frame-Cycle Events
func update()
每一帧都会调用一次,场景变化执行的刷新动作。Tells your app to perform any app-specific logic to update your scene.
func didEvaluateActions()
每一帧都会调用一次,任何的动作都会被评估,下一帧的动作不会被计算在当前帧执行。在didSimulatePhysics之前调用。Tells your app to peform any necessary logic after scene actions are evaluated.
func didSimulatePhysics()
每一帧都会调用一次,场景模拟物理效果改变。Tells your app to peform any necessary logic after physics simulations are performed.
func didApplyConstraints()
每一帧都会调用一次,场景约束发生改变。Tells your app to peform any necessary logic after constraints are applied.
func didFinishUpdate()
每一帧都会调用一次,场景完成刷新。Tells your app to peform any necessary logic after the scene has finished all of the steps required to process animations.
设置背景音乐
let audio = SKAudioNode(fileNamed: "drums.mp3")
spriteKitViewController.scene.addChild(audio)
坐标系转换
func convertPoint(fromView: CGPoint)
将视点坐标转换为场景坐标。
func convertPoint(toView: CGPoint)
将点从场景坐标转换为查看坐标。
网友评论