2017-01-01 11 views
2

私はSKSpriteNodesで構成されるマップをサブクラスに追加することによって、SKNodeをサブクラス化してマップをレンダリングします。SKNodeをサブクラス化するときに、Frameプロパティが空でない値を返す必要がありますか?

すべてがうまく機能しているが、私は私のノードのサブクラスのFrameが常にあることに気づい0

私は、ドキュメントにこれについて何かを見つけることができませんでした:私はFrameプロパティと戻りを上書きすることになっています正しい値ですか?

+0

「フレームは...常に0ですか?フレームはCGRect構造体でなければならないので、ゼロにすることはできません。通常、SKNodeのフレームは有効な位置を持ちますが、幅と高さはゼロです。それ自体がシーン内の0,0に位置する場合、そのすべてのメンバーはゼロになります。これは正常でフレームを無効にする必要はありません。子のフレームが必要な場合は、calculateAccumulatedFrameメソッドを使用します。 –

+0

幅と高さともに0を意味します。私はSKSpriteNodeが有効な幅と高さを持っていることに気付きました。 – Krumelur

答えて

3

frameプロパティはノード自体のフレームで、子は無視されます。 SKNodeの場合、これは位置ですが、幅と高さはゼロです。

ノードのクラスがコンテンツを描画する場合、フレームは空ではありません。それが空であるために、それが正しいようSKNodeは何のコンテンツを描画しない:として私が読ん (https://developer.apple.com/reference/spritekit/sknode

ノードその子のフレームは、そのサブツリーべき呼のフレームを必要とフレームプロパティを参照しない方法calculateAccumulatedFrame()および機能によって提供されます。

だから、にする必要がありますあなたのSKNodeのフレームを無効にする必要はありません。私は決して持っていない、いくつかのアプリで同様の構成を持っている まだ問題がなかった...

+0

意味があります。 「コンテンツを描く」ノードの例は何でしょうか? – Krumelur

+0

@Krumelur:SKSpriteNodeまたはSKLabelNodeは、どちらもSKNodeを継承しますが、描画可能なコンテンツを持つので、その内容に応じて幅と高さを持ちます。 –

関連する問題