SKNode

场景中的节点

  • 初始化
public init()
public init?(coder aDecoder: NSCoder)
public convenience init?(fileNamed filename: String)
@available(iOS 12.0, *)
public convenience init(fileNamed filename: String, securelyWithClasses classes: Set<AnyHashable>) throws
  • 位置尺寸
open var frame: CGRect { get }
/// 父节点坐标系中的一个矩形,包含组成自身和所有子节点的面积最大的矩形
open func calculateAccumulatedFrame() -> CGRect
/// 父节点中的位置
open var position: CGPoint
  • 加载顺序
/// 在父节点上 Z 轴的位置,越大,视图越在上面
open var zPosition: CGFloat
  • 缩放和旋转
/// Z 轴的旋转角度
open var zRotation: CGFloat
/// X 轴的缩放倍数
open var xScale: CGFloat
/// y 轴的缩放倍数
open var yScale: CGFloat
/// 同时设置 x、y 轴的缩放倍数
open func setScale(_ scale: CGFloat)
  • 属性
/// action 是否暂停
open var isPaused: Bool
/// 和 UIView 属性一样,默认没有
open var isUserInteractionEnabled: Bool
/// @available(iOS 11.0, *) 聚焦方式
open var focusBehavior: SKNodeFocusBehavior
  • 父类和子类相关
/// 父节点
open var parent: SKNode? { get }
/// 子类节点集合
open var children: [SKNode] { get }
/// 加载到的哪个场景中
open var scene: SKScene? { get }
  • 自定义设置
/// 自己命名的名字
open var name: String?
/// 自定义的数据
open var userData: NSMutableDictionary?
  • 物理行为
/// 物理实体,速度,重力等,跟场景的 SKPhysicsWorld 相互
open var physicsBody: SKPhysicsBody?
  • 运动学约束
/// 运动学约束,用于IK求解
@NSCopying open var reachConstraints: SKReachConstraints?
/// 运动学约束在动作和物理每一帧的约束
open var constraints: [SKConstraint]?
  • 修改节点树
/// 添加节点
open func addChild(_ node: SKNode)
/// 插入节点在某个位置
open func insertChild(_ node: SKNode, at index: Int)
/// 移除哪些子节点
open func removeChildren(in nodes: [SKNode])
/// 移除所有子节点
open func removeAllChildren()
/// 从父视图移除
open func removeFromParent()
/// @available(iOS 9.0, *) 移动到新的父节点之中,位置不变,必须是同一个场景之中
open func move(toParent parent: SKNode)
  • 获取节点
/// 根据名字获取节点,只获取到第一个
open func childNode(withName name: String) -> SKNode?
/// 根据名字获取节点,获取节点(也可以根据类名获取,Swift 需要完整命名空间的名字,如 SpaceGame.ClassNode)。每获取一次,回调一次,当设置第二个参数设置为 true,停止获取。
open func enumerateChildNodes(withName name: String, using block: @escaping (SKNode, UnsafeMutablePointer<ObjCBool>) -> Void)
/// 根据名字获取节点列表
open subscript(name: String) -> [SKNode] { get }
/// 如果指定的父节点在此节点的父节点链中,则返回true
open func inParentHierarchy(_ parent: SKNode) -> Bool
  • 动作 SKAction 相关
/// action 的速度 ,包含子类
open var speed: CGFloat
/// 添加 动作
open func run(_ action: SKAction)
open func run(_ action: SKAction, completion block: @escaping () -> Void)
open func run(_ action: SKAction) async
open func run(_ action: SKAction, withKey key: String)

/// 是否有动作
open func hasActions() -> Bool
/// 获取动作
open func action(forKey key: String) -> SKAction?

/// 移除动作
open func removeAction(forKey key: String)
open func removeAllActions()
  • 根据位置测试节点
/// 是否包含某个点
open func contains(_ p: CGPoint) -> Bool
/// 在某个位置上的节点,返回子节点,如果没有返回自己
open func atPoint(_ p: CGPoint) -> SKNode
/// 在某个位置上的节点列表,包含自己
open func nodes(at p: CGPoint) -> [SKNode]
/// 两节点是否相交
open func intersects(_ node: SKNode) -> Bool
/// 是否是某一节点
open func isEqual(to node: SKNode) -> Bool
  • 坐标转换
/// 将一个点从节点树中另一个节点的坐标系转换为该节点的坐标系
open func convert(_ point: CGPoint, from node: SKNode) -> CGPoint
/// 将此节点坐标系中的一个点转换为节点树中另一个节点的坐标系
open func convert(_ point: CGPoint, to node: SKNode) -> CGPoint
  • UITouch
/// 在 scence 中的 touchesBegan 等方法中使用
extension UITouch {
    /// 获取指定 node 点击的位置
    open func location(in node: SKNode) -> CGPoint
    /// 获取指定 node  之前的位置,如 touchesMoved 使用
    open func previousLocation(in node: SKNode) -> CGPoint
}
posted on 2022-08-23 10:04  xiao孛  阅读(76)  评论(0编辑  收藏  举报