在做卡牌遊戲的項目中,遇到了動畫裁剪的問題。假如動畫是一個圓形動畫,在page1的頁面中位置靠右,在page2中很可能會看到這個動畫的另一半此時,就需要做動畫做裁剪,在工程中有一個setScissorRect函數,可以對動畫進行裁剪。
void play::PCBaseNode::setScissorRect(const CCRect & val )
{
scissorRect = val;
haveScissorRect = true;
scissorBoxRect = freshScissorBoxRect();
}
CCRect play::PCBaseNode::freshScissorBoxRect()
{
CCRect tempRect;
tempRect.origin = this->convertToWorldSpace(scissorRect.origin);
CCPoint sizeP = this->convertToWorldSpace(ccp(scissorRect.origin.x+scissorRect.size.width,scissorRect.origin.y+scissorRect.size.height));
tempRect.origin.x *= CC_CONTENT_SCALE_FACTOR();
tempRect.origin.y *= CC_CONTENT_SCALE_FACTOR();
tempRect.size.width = sizeP.x * CC_CONTENT_SCALE_FACTOR() – tempRect.origin.x;
tempRect.size.height = sizeP.y * CC_CONTENT_SCALE_FACTOR() – tempRect.origin.y;
return tempRect;
}