最近做了一个类似捕鱼达人显示金币数字滚动的效果,在win32上正常,裁剪代码如下:
void NumberScrollLabel::visit()
{
//启动遮罩效果
glEnable(GL_SCISSOR_TEST);
CCPoint pos = CCPointZero;
pos = visibleNode->getParent()->convertToWorldSpace(pos);
//设置裁剪范围,cur_numberSize是我自己数字的大小,我的数字设置宽高一样。
CCRect rect = CCRectMake(pos.x, pos.y, cur_numberSize, cur_numberSize);
//设置遮罩效果范围
glScissor(rect.origin.x, rect.origin.y, rect.size.width, rect.size.height);
//显示父类的内容
CCNode::visit();
//关闭遮罩效果
glDisable(GL_SCISSOR_TEST);
}
当我移植到安卓平台上时,发现不能正常显示数字,查找了一些资料后,只要修改一些地方就可以正常显示,代码如下:
void NumberScrollLabel::visit()
{
//启动遮罩效果
glEnable(GL_SCISSOR_TEST);
CCPoint pos = CCPointZero;
pos = visibleNode->getParent()->convertToWorldSpace(pos);
float scaleX = CCEGLView::sharedOpenGLView()->getScaleX();
float scaleY = CCEGLView::sharedOpenGLView()->getScaleY();
CCRect viewPortRect = CCEGLView::sharedOpenGLView()->getViewPortRect();
//设置遮罩效果范围,cur_numberSize是我自己数字的大小,我的数字设置宽高一样。
glScissor(pos.x * scaleX + viewPortRect.origin.x, pos.y * scaleY + viewPortRect.origin.y, cur_numberSize * scaleX, cur_numberSize * scaleY);
CCNode::visit();
//关闭遮罩效果
glDisable(GL_SCISSOR_TEST);
}