私はSKSpriteNodes
で構成されるマップをサブクラスに追加することによって、SKNode
をサブクラス化してマップをレンダリングします。SKNodeをサブクラス化するときに、Frameプロパティが空でない値を返す必要がありますか?
すべてがうまく機能しているが、私は私のノードのサブクラスのFrame
が常にあることに気づい0
私は、ドキュメントにこれについて何かを見つけることができませんでした:私はFrame
プロパティと戻りを上書きすることになっています正しい値ですか?
私はSKSpriteNodes
で構成されるマップをサブクラスに追加することによって、SKNode
をサブクラス化してマップをレンダリングします。SKNodeをサブクラス化するときに、Frameプロパティが空でない値を返す必要がありますか?
すべてがうまく機能しているが、私は私のノードのサブクラスのFrame
が常にあることに気づい0
私は、ドキュメントにこれについて何かを見つけることができませんでした:私はFrame
プロパティと戻りを上書きすることになっています正しい値ですか?
frameプロパティはノード自体のフレームで、子は無視されます。 SKNodeの場合、これは位置ですが、幅と高さはゼロです。
ノードのクラスがコンテンツを描画する場合、フレームは空ではありません。それが空であるために、それが正しいようSKNodeは何のコンテンツを描画しない:として私が読ん (https://developer.apple.com/reference/spritekit/sknode)
。
ノードとその子のフレームは、そのサブツリーべき呼のフレームを必要とフレームプロパティを参照しない方法calculateAccumulatedFrame()および機能によって提供されます。
だから、はにする必要がありますあなたのSKNodeのフレームを無効にする必要はありません。私は決して持っていない、いくつかのアプリで同様の構成を持っている まだ問題がなかった...
意味があります。 「コンテンツを描く」ノードの例は何でしょうか? – Krumelur
@Krumelur:SKSpriteNodeまたはSKLabelNodeは、どちらもSKNodeを継承しますが、描画可能なコンテンツを持つので、その内容に応じて幅と高さを持ちます。 –
「フレームは...常に0ですか?フレームはCGRect構造体でなければならないので、ゼロにすることはできません。通常、SKNodeのフレームは有効な位置を持ちますが、幅と高さはゼロです。それ自体がシーン内の0,0に位置する場合、そのすべてのメンバーはゼロになります。これは正常でフレームを無効にする必要はありません。子のフレームが必要な場合は、calculateAccumulatedFrameメソッドを使用します。 –
幅と高さともに0を意味します。私はSKSpriteNodeが有効な幅と高さを持っていることに気付きました。 – Krumelur