#ios #swift #sprite-kit #sknode
#iOS #swift #sprite-kit #sknode
Вопрос:
У меня возникла эта проблема, и я не могу ее решить, я действительно не понимаю документацию по развертыванию переменных
var ladybug: SKNode = SKNode.childNodeWithName("ladybug")
Ошибка: (строка!) -> SKNode! не конвертируется в «SKNode»
Спасибо
Ответ №1:
childNodeWithName
это не метод класса. Вы вызываете его в экземпляре, а не в SKNode
самом классе.
Если вы пишете этот код внутри SKScene
подкласса, экземпляр, для которого вы хотите вызвать этот метод, может быть self
.
Ответ №2:
Метод работает нормально:
var sprite = SKNode()
var ladybug: SKNode! = sprite.childNodeWithName("ladybug")
Но вам нужно вызвать метод для экземпляра SKNode, а не для самого SKNode.
Комментарии:
1. это был просто пример, показывающий, что вы должны использовать экземпляр ok SKNode. Как сказал Рикстер, если вы находитесь внутри класса SKScene, вы можете попробовать
self.childNodeWithName("ladybug")
2. В этом ответе используется пустой SKNode, созданный только для иллюстрации. Если у вас инициализирован фактический SKNode И этот узел имеет дочерний узел с именем «ladybug», он должен работать просто отлично.
Ответ №3:
childNodeWithName возвращает необязательный SKNode!. Используйте вывод типа и помните, что вы должны извлечь узел из его родительского элемента (обычно self, SKScene)
let ladybug = self.childNodeWithName("ladybug")
И вот на что это похоже, когда вы создаете спрайт
let ladybug = SKSpriteNode(ImageNamed:"ladybug.png")
labybug.name = "ladybug"
self.addChild(ladybug)
Попробуйте использовать let вместо var для объектов. Вы можете без проблем изменить его свойства, но лучше использовать константы.