2015-11-19 4 views
0

Im использованием протокола для всей моей игры спрайт, который выглядит следующим образом:SKSpriteNode не отображая

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() { 

    } 
} 

и, наконец, им называя спрайте с игрой:

let crow2 = Crow() 
     crow2.spawn(world, position: CGPoint(x: 220, y: 210)) 

У меня нет ошибок, но почему-то спрайт не делает показать.

ответ

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, ему действительно не нужно свойство sprite node, потому что он сам является спрайт-узлом. Если вы хотите, чтобы это был «узел изображения», вам просто нужно текстурировать его с изображением. Итак, передайте изображение и установите его свойство текстуры.

+0

Спасибо, это сработало блестяще. если вы не возражаете объяснить, почему это произошло? Я думал, что я автоматически применил бы к спрайту изображений? – RickyD

Смежные вопросы