2

我遇到了这个问题,无法解决,我不太了解解包变量的文档

var ladybug: SKNode = SKNode.childNodeWithName("ladybug")

错误:(字符串!)-> SKNode!不能转换为“SKNode”

谢谢

4

3 回答 3

3

childNodeWithName不是类方法。你在一个实例上调用它,而不是SKNode类本身。

如果您在SKScene子类中编写此代码,则您要调用此方法的实例可能是self.

于 2014-07-04T00:23:14.913 回答
2

该方法工作正常:

var sprite = SKNode()
var ladybug: SKNode! = sprite.childNodeWithName("ladybug")

但是您需要在 SKNode 的实例上调用该方法,而不是 SKNode 本身。

于 2014-07-04T00:23:21.883 回答
1

childNodeWithName 返回一个可选的 SKNode!。使用类型推断并记住,您必须从其父节点(通常是自身,SKScene)中检索节点

let ladybug = self.childNodeWithName("ladybug")

这就是你创建精灵时的样子

let ladybug = SKSpriteNode(ImageNamed:"ladybug.png")
labybug.name = "ladybug"
self.addChild(ladybug)

尝试对对象使用 let 而不是 var。您可以毫无问题地修改其属性,但最好使用常量。

于 2014-08-09T22:23:19.127 回答