来自Objective-C的自定义Init()转换

时间:2014-07-12 19:41:07

标签: objective-c swift skspritenode

很抱歉有新手问题但有人可以帮忙将其翻译成Swift吗?

-(instancetype)init
{
  self = [super initWithImageNamed:@"character.png"];
  {.
    self.name = playerName;
    self.zPosition = 10;
  }
  return self;
}

适用于SKSpriteNode的孩子

当我尝试调用super.init(imageNamed: "character.png")时,我收到错误消息“必须调用超类SKSpriteNode的指定初始化器。

如果我试着像这样写:

init() {
    super.init()
    self.name = playerName
    self.zPosition = 10
}

我打电话给我的GameScene时收到错误:

var player : Player = Player(childNodeWithName(playerName))

我收到有关将类型转换为字符串的错误。

1 个答案:

答案 0 :(得分:3)

第1期

子类初始化器必须调用超类的指定初始化器。

对于initWithTexture: color: size:

的SKSpritenode

SO

可以直接从图像制作SKTexture:
let texture = SKTexture(imageName: "character.png")

颜色:
let color = UIColor.clearColor()

然后:
super.init(texture: texture color:color size:texture.size)

问题2:

类播放器需要一个带有SKNode的初始化器:
init(node: SKNode) { ... }