2、SpriteKit (SKScene)
作者:互联网
简介
SKScene对象代表SpriteKit中的内容场景。场景是SpriteKit节点树中的根节点(SKNode)。这些节点提供场景动画和渲染以显示的内容。要显示一个场景,你可以从SKView、SKRenderer或wkinterfaceeskscene中呈现它。
使用
SKScene
- 初始化
/// 初始化方法
public init(size: CGSize)
/// 场景在不同尺寸下的拉伸样式
open var scaleMode: SKSceneScaleMode
/// @available(iOS 10.0, *) 场景初始化后调用,相当于 ViewDidLoad()
open func sceneDidLoad()
/// 加载到 SKView 上
open func didMove(to view: SKView)
/// 从 SKView 上移除
open func willMove(from view: SKView)
/// scence 场景尺寸改变
open func didChangeSize(_ oldSize: CGSize)
- 配置窗口
/// @available(iOS 9.0, *) 摄像机,当场景的尺寸大于当前屏幕时,可以去初始化摄像机,用于获取基于摄像机相对于场景的位置的视图缩放和平移
weak open var camera: SKCameraNode?
/// 场景的坐标原点位置,范围是(0, 0) ~ (1, 1)。默认是(0, 0),屏幕左下角为原点。往上是 y 值增加,往下是 y 值减少,往右是 x 值增加,往左是 x 值减少
open var anchorPoint: CGPoint
/// 场景的屋里世界,包含时间流速、重力等等
open var physicsWorld: SKPhysicsWorld { get }
/// 父视图
weak open var view: SKView? { get }
- 响应帧周期,每一帧都调用一次
/// currentTime 每次都是增加的,两次的时间间隔就是一帧的时间
open func update(_ currentTime: TimeInterval)
/// action 相关帧周期
open func didEvaluateActions()
/// PhysicsBody 相关帧周期
open func didSimulatePhysics()
/// @available(iOS 8.0, *) 更新约束 相关帧周期
open func didApplyConstraints()
/// @available(iOS 8.0, *) 每一帧调用完成
open func didFinishUpdate()
- 音频相关
/// @available(iOS 9.0, *) 场景中音频的听者位置的节点。
weak open var listener: SKNode?
/// @available(iOS 9.0, *) 场景中包含的音频节点播放音频的引擎
open var audioEngine: AVAudioEngine { get }
- 代理
@available(iOS 8.0, *)
weak open var delegate: SKSceneDelegate?
/// 执行任何特定于应用程序的逻辑来更新您的场景
optional func update(_ currentTime: TimeInterval, for scene: SKScene)
/// 完成场景动作后
optional func didEvaluateActions(for scene: SKScene)
/// 完成物理模拟后
optional func didSimulatePhysics(for scene: SKScene)
/// 更新约束后
optional func didApplyConstraints(for scene: SKScene)
/// 完成所有的动画后
optional func didFinishUpdate(for scene: SKScene)
- 坐标转换
/// 将点从视图坐标转换为场景坐标
open func convertPoint(fromView point: CGPoint) -> CGPoint
/// 将点从场景坐标转换为视图坐标
open func convertPoint(toView point: CGPoint) -> CGPoint
SKPhysicsWorld
Scene 中的物理世界,用来模拟真实世界的事件
/// 重力,默认是 { 0.0, +/-9.8 }
open var gravity: CGVector
/// 时间速度
open var speed: CGFloat
- 接触碰撞
/// 接触代理
unowned(unsafe) open var contactDelegate: SKPhysicsContactDelegate?
/// 开始接触
optional func didBegin(_ contact: SKPhysicsContact)
/// 结束接触
optional func didEnd(_ contact: SKPhysicsContact)
- 关节
/// 添加关节
open func add(_ joint: SKPhysicsJoint)
/// 移除关节
open func remove(_ joint: SKPhysicsJoint)
/// 移除所有关机
open func removeAllJoints()
/// @available(iOS 8.0, *) 对场景中的所有场节点进行采样,并返回它们在该点的力的总和。
open func sampleFields(at position: vector_float3) -> vector_float3
- 在场景中搜索物理体
/// 搜索包含点的第一个物理体
open func body(at point: CGPoint) -> SKPhysicsBody?
/// 搜索与指定矩形相交的第一个物理体
open func body(in rect: CGRect) -> SKPhysicsBody?
/// 搜索与射线相交的第一个物理体
open func body(alongRayStart start: CGPoint, end: CGPoint) -> SKPhysicsBody?
/// 枚举场景中包含一个点的所有物理体
open func enumerateBodies(at point: CGPoint, using block: @escaping (SKPhysicsBody, UnsafeMutablePointer<ObjCBool>) -> Void)
/// 枚举场景中与指定矩形相交的所有物理实体
open func enumerateBodies(in rect: CGRect, using block: @escaping (SKPhysicsBody, UnsafeMutablePointer<ObjCBool>) -> Void)
/// 枚举场景中与射线相交的所有物理体
open func enumerateBodies(alongRayStart start: CGPoint, end: CGPoint, using block: @escaping (SKPhysicsBody, CGPoint, CGVector, UnsafeMutablePointer<ObjCBool>) -> Void)
引用
https://developer.apple.com/documentation/spritekit
标签:CGPoint,SKScene,iOS,SpriteKit,场景,func,var,open 来源: https://www.cnblogs.com/shen5214444887/p/16554027.html