gpt4 book ai didi

swift - 如何从 SKNode.children 数组访问 SKNode 子类方法?

转载 作者:行者123 更新时间:2023-11-30 10:44:22 27 4
gpt4 key购买 nike

我有一个场景,其中有许多子节点,它们是 SKNode 的子类。我正在尝试访问每个子节点的方法,但收到错误“‘SKNode’类型的值没有成员‘[成员名称]”。

全部基于 Xcode 10.2 上的 Swift 5(如果相关的话?)。

import SpriteKit

class GameScene: SKScene {

override func didMove(to view: SKView) {

let slim = NamedNode(name: "Slim Shady")
let snoop = NamedNode(name: "Snoop Dog")
let shaggy = NamedNode(name: "Shaggy")

self.addChild(slim)
self.addChild(snoop)
self.addChild(shaggy)

for child in self.children {
child.whatsMyName()
// ERROR: Value of type 'SKNode' has no member 'whatsMyName'
}
}
}


class NamedNode: SKNode {

var standup = false

init(name: String) {
super.init()
self.name = name
}

required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}

func whatsMyName() {
print("My name is ", name as Any)
if self.name == "Slim Shady" {
standup = true
}
}
}

如何从 Scene.children 数组访问这些方法?是否有可能或者我应该改变策略?

谢谢!

最佳答案

It is said here that

SKScene 的子级是 SKNode 类型。您想要访问 SKNode 子类的属性。在编译时,子节点被视为 SKNode。您应该尝试为您的 child 选角,例如

for child in self.children { (child as? NamedNode).whatsMyName() }

请记住,向下转型通常是一种代码味道。

关于swift - 如何从 SKNode.children 数组访问 SKNode 子类方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56077420/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com