画面に表示されるCCNodeの「真の」スケールを判断しようとしています。ノード空間に対するワールド空間でのコンテンツ サイズ。このノードは、階層の奥深くに埋め込まれている可能性があり、さまざまなスケールおよびスキュー ファクターを持つ祖先ノードを持っている可能性があります。本質的に、ノードの効果的な scaleX および scaleY 係数を見つけようとしています。これは、ノードのバウンディング ボックスをワールド空間に変換し、それらのサイズを比較することで判断できます。しかし、これを行う方法は?
1 に答える
1
inline CCSize effectiveSize(CCNodePtr n) {
CCSize s = n -> getContentSize();
CCPoint v00 = n -> convertToWorldSpace({0,0});
CCPoint v10 = n -> convertToWorldSpace({s.width,0});
CCPoint v01 = n -> convertToWorldSpace({0,s.height});
return {ccpDistance(v10,v00),ccpDistance(v01,v00)};
}
CCSize size0 = myNode -> getContentSize();
CCSize size1 = effectiveSize(myNode);
float effectiveScaleX = size1.width/size0.width;
float effectiveScaleY = size1.height/size0.height;
于 2013-09-12T22:29:40.883 に答える