【发布时间】:2015-09-03 13:57:14
【问题描述】:
谁能告诉我我这样做是否正确?使用 Xcode 7.beta6 我在 Xcode 场景编辑器中设置了一个SKSpriteNode 自定义类。
import UIKit
import SpriteKit
class ZoneNode: SKSpriteNode {
var zoneID: Int = 0
}
我在场景编辑器中设置了SKSpriteNode,如下所示:
注意:无论有没有模块名称,我都试过了,据我所知,它似乎没有任何区别。
似乎一切正常,场景中有 8 个 SKSpriteNodes,但只有 2 个 ZoneNodes,当我列出场景中的所有孩子时,我得到以下输出。
// CODE
let allChildren = self.children
for eachChild in allChildren {
if eachChild.isKindOfClass(ZoneNode) {
print("CHILD: \(eachChild)")
}
}
.
// OUTPUT
CHILD: <SKSpriteNode> name:'CUSTOM_SPRITE_2' texture:['nil'] position:{0, 0} scale:{1.00, 1.00} size:{100, 100} anchor:{0.5, 0.5} rotation:0.00
CHILD: <SKSpriteNode> name:'CUSTOM_SPRITE_1' texture:['nil'] position:{0, 0} scale:{1.00, 1.00} size:{100, 100} anchor:{0.5, 0.5} rotation:0.00
SKIPPED: 6
我知道self.children 返回一个 SKNode 数组[SKNode],如果我将一个节点向下转换为ZoneNode,一切都按预期工作,我可以轻松访问属性zoneID。
let thisZoneNode = eachChild as! ZoneNode
thisZoneNode.zoneID = 123
我有点困惑,为什么打印将节点列为<SKSpriteNode> 而不是ZoneNode,尽管这可能只是指回我最初子类化的基类,有人有什么想法吗?
【问题讨论】:
标签: skspritenode xcode7 sknode