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
}

results matching ""

    No results matching ""