SKSpriteNode不显示

时间:2015-11-19 21:51:28

标签: ios swift sprite-kit

我为我的所有游戏精灵使用了一个协议,如下所示:

Sub showOnly()
  Dim displayColumns As String: displayColumns = "B,C,G,A,C"
  Sheet2.UsedRange.Columns.Hidden = True

  Dim ar, col
  ar = Split(displayColumns, ",")
  For Each col In ar
    Sheet2.Columns(col).Hidden = False
  Next

End Sub

然后使用以下内容创建一个乌鸦精灵:

import SpriteKit

protocol GameSprite{

    var imageSprite : SKSpriteNode {get set}

    func spawn(parentNode: SKNode, position: CGPoint, size:CGSize)

    func onTap()

}

最后我将精灵调用到游戏场景中:

    import SpriteKit

class Crow: SKSpriteNode, GameSprite{

    var imageSprite = SKSpriteNode(imageNamed: "crow.png")
    var flyAnimation = SKAction()

    func spawn(parentNode: SKNode, position: CGPoint, size: CGSize = CGSize(width: 40, height: 40)) {

        parentNode.addChild(self)
        //createAnimations()
        self.position = position
        self.size = size
        //self.runAction(flyAnimation)
    }

    func onTap() {

    }
}

我没有错误,但由于某种原因,精灵没有显示。

1 个答案:

答案 0 :(得分:0)

您可以说:

func spawn(parentNode: SKNode, position: CGPoint, size: CGSize = CGSize(width: 40, height: 40)) {

        parentNode.addChild(self.imageSprite)
        //createAnimations()
        self.imageSprite.position = position
        self.imageSprite.size = size
        //self.runAction(flyAnimation)
    }

或者这个

func spawn(parentNode: SKNode, position: CGPoint, size: CGSize = CGSize(width: 40, height: 40)) {
        self.texture = SKTexture(image: image)
        parentNode.addChild(self)
        //createAnimations()
        self.position = position
        self.size = size
        //self.runAction(flyAnimation)
    }

这可能更接近你原来的意图。 Crow类是SKSpritNode的子类,它并不真正需要精灵节点属性,因为它本身就是一个精灵节点。如果你想让它成为一个"图像节点,"你只需要用图像纹理它。所以传入一个图像并设置它的纹理属性。