SKNode
游戏引擎中的一切东西都称为节点(Node),包括SKScene也是继承与SKNode
SKNode属性和方法
open class SKNode : UIResponder, NSCopying, NSCoding, UIFocusItem {
public init()
public init?(coder aDecoder: NSCoder)
public convenience init?(fileNamed filename: String)
//节点的Frame,就好像UIView的Frame
open var frame: CGRect { get }
/**
Calculates the bounding box including all child nodes in parents coordinate system.
*/
open func calculateAccumulatedFrame() -> CGRect
/**
节点在屏幕的位置,不过和一般的坐标系不同的是,这里的坐标系(0,0)点在屏幕左下角
*/
open var position: CGPoint
/**
* 如果 ignoresSiblingOrder 为true,对于拥有相同的zPosition 属性的每一个子节点,Sprite Kit 将不
保证按照何种顺序来绘制它们。
* 如果 ignoresSiblingOrder 为false,对于拥有相同的zPosition 属性的每一个子节点,Sprite Kit 将按
照它们添加到父节点的顺序来绘制它们。
通常,将这个属性设置为true 是较好的做法,因为这允许Sprite Kit 在幕后进行性能优化,以使得你的
游戏运行得更快。
*/
open var zPosition: CGFloat
/**
沿着z轴方向旋转
*/
open var zRotation: CGFloat
/**
x方向的缩放
*/
open var xScale: CGFloat
/**
y方向的缩放
*/
open var yScale: CGFloat
/**
节点的速度
*/
open var speed: CGFloat
/**
节点的透明度
*/
open var alpha: CGFloat
/**
节点的动作是否暂停
*/
open var isPaused: Bool
/**
节点是否隐藏
*/
open var isHidden: Bool
/**
节点是否支撑用户交互
*/
open var isUserInteractionEnabled: Bool
/**
节点的父节点。
如果这是nil表明节点没有被添加到另一个节点中,因此它是自己图形的根节点。
*/
open var parent: SKNode? { get }
/**
节点中的所以子节点
*/
open var children: [SKNode] { get }
/**
节点的名称,设置名称用于标识节点,便于在父节点中寻找
*/
open var name: String?
/**
节点所处的SKScene场景
*/
open var scene: SKScene? { get }
/**
物理体附节点,具有同步缩放、旋转、定位
*/
open var physicsBody: SKPhysicsBody?
/**
可以存储一些用户信息的可选字典
*/
open var userData: NSMutableDictionary?
/**
运动约束,用于IK求解
*/
@NSCopying open var reachConstraints: SKReachConstraints?
/**
对skconstraints可选阵列
约束评估每个帧后的行动和物理。
节点的变换将被改变以满足约束。
*/
open var constraints: [SKConstraint]?
/**
同时设置x,y轴方向的缩放值
*/
open func setScale(_ scale: CGFloat)
/**
在节点中添加子节点
*/
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?
/**
遍历节点中所有子节点
*/
open func enumerateChildNodes(withName name: String, using block: @escaping (SKNode, UnsafeMutablePointer<ObjCBool>) -> Swift.Void)
/**
* Simplified shorthand for enumerateChildNodesWithName that returns an array of the matching nodes.
* This allows subscripting of the form:
* NSArray *childrenMatchingName = node[@"name"]
*
* or even complex like:
* NSArray *siblingsBeginningWithA = node[@"../a*"]
*
* @param name An Xpath style path that can include simple regular expressions for matching node names.
* @see enumerateChildNodesWithName:usingBlock:
*/
@available(iOS 8.0, *)
open subscript(name: String) -> [SKNode] { get }
/* 如果指定父节点位于父节点的父链中,则返回true。 */
open func inParentHierarchy(_ parent: SKNode) -> Bool
/**
执行SKAction动作
*/
open func run(_ action: SKAction)
/**
执行SKAction动作,并在完成的时候调用闭包做一些事情
*/
open func run(_ action: SKAction, completion block: @escaping () -> Swift.Void)
/**
执行指定Key的SKAction动作
*/
open func run(_ action: SKAction, withKey key: String)
/**
判断是否有动作在执行
*/
open func hasActions() -> Bool
/**
指定动作的Key
*/
open func action(forKey key: String) -> SKAction?
/**
移除某Key的SKAction动作
*/
open func removeAction(forKey key: String)
/**
移除所以SKAction动作
*/
open func removeAllActions()
open func contains(_ p: CGPoint) -> Bool
/***
返回给定节点的节点本身或子节点。
如果接收到返回,在给定的点上没有子节点。
返回给定位置的子节点或自。
*/
open func atPoint(_ p: CGPoint) -> SKNode
open func nodes(at p: CGPoint) -> [SKNode]
open func convert(_ point: CGPoint, from node: SKNode) -> CGPoint
open func convert(_ point: CGPoint, to node: SKNode) -> CGPoint
/* 如果该节点的边界与另一个节点的变换边界相交,则返回true,否则为false
*/
open func intersects(_ node: SKNode) -> Bool
/* 如果该节点具有与其他对象等效的内容,则返回true,否则为false */
open func isEqual(to node: SKNode) -> Bool
}