我正在尝试确定屏幕上显示的CCNode的“真实”比例,即。它在世界空间中的内容大小相对于其节点空间。该节点可以深入嵌入层次结构中,并且具有具有不同比例和偏斜因子的祖先节点。本质上,我试图找出节点的有效scaleX和scaleY因子。这可以通过将节点的边界框转换为世界空间并比较它们的大小来确定。但是,怎么做?
答案 0 :(得分: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;