2

我正在尝试确定 CCNode 出现在屏幕上的“真实”比例,即。它在世界空间中的内容大小相对于其节点空间。该节点可以嵌入层次结构的深处,并具有具有不同比例和偏斜因子的祖先节点。本质上,我试图找出节点的有效 scaleX 和 scaleY 因子。这可以通过将节点的边界框转换为世界空间并比较它们的大小来确定。但是,如何做到这一点?

4

1 回答 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 回答