cocos2d-x之区域裁剪
来源:互联网 发布:2017年10月工资算法 编辑:程序博客网 时间:2024/05/17 23:47
如果要在cocos2d-x中实现区域裁剪,一般要重写 visit函数:
void visit(void);
void MyControl::visit(void)
{
glEnable(GL_SCISSOR_TEST);
constfloat s = CCDirector::sharedDirector()->getContentScaleFactor();
CCPoint selfPos = this->getPosition();
CCSize selfContentSize = this->getContentSize();
CCLog("selfPos = %d,%d, selfContentSize =%d,%d ,s = %f", selfPos.x, selfPos.y ,selfContentSize.width, selfContentSize.height ,s);
// 如果是自己的锚点是(0.5,0.5)
// glScissor(selfPos.x *s - selfContentSize.width*s * 0.5f,
// selfPos.y * s - selfContentSize.height*s * 0.5f,
// selfContentSize.width*s,
// selfContentSize.height*s);
//自己的锚点是(0,0)
glScissor(selfPos.x *s ,
selfPos.y * s ,
selfContentSize.width*s,
selfContentSize.height*s);
CCNode::visit();//显示父类的内容
glDisable(GL_SCISSOR_TEST);
}
一般是这么写的,但是后面移植到安卓机器上面的时候,发现内容完全显示不出来了,查了些资料,改成如下的实现就好了:
void MyControl::visit(void)
{
glEnable(GL_SCISSOR_TEST);
CCPoint selfPos = this->getPosition();
CCSize selfContentSize = this->getContentSize();
CCLog("selfPos = %d,%d, selfContentSize =%d,%d ,s = %f", selfPos.x, selfPos.y ,selfContentSize.width, selfContentSize.height ,s);
float scaleX = CCEGLView::sharedOpenGLView()->getScaleX();
float scaleY = CCEGLView::sharedOpenGLView()->getScaleY();
CCRect viewPortRect = CCEGLView::sharedOpenGLView()->getViewPortRect();
glScissor(selfPos.x *scaleX + viewPortRect.origin.x ,
selfPos.y * scaleY + viewPortRect.origin.y ,
selfContentSize.width*scaleX,
selfContentSize.height*scaleY);
CCNode::visit();//显示父类的内容
glDisable(GL_SCISSOR_TEST);
}
如上,iOS跟 安卓系统都没有问题了,最好这样设置。
- cocos2d-x之区域裁剪
- cocos2d-x之区域裁剪
- cocos2d-x之区域裁剪
- cocos2d-x之区域裁剪
- cocos2d-x中实现区域裁剪
- cocos2d-x新手引导遮罩CCClippingNode裁剪区域
- [COCOS2D-X]裁剪实现
- COCOS2D-X]裁剪实现
- 【Cocos2d-x】节点裁剪 ClippingNode
- [7]Cocos2d-x之碰撞区域发生偏移
- Cocos2d-x 3.x ClippingNode裁剪节点
- 【Cocos2d-x】Cocos2d-x 3.0 区域裁切 的具体应用之游戏公告显示
- cocos2d-x CCLayer可视区域
- [Quick-x]制作新手引导高亮区域方法之二:裁剪模式
- cocos2d-x 3.x 不规则点击区域
- Cocos2d用裁剪区域CCClippingNode实现滚动字幕
- 图像处理之ROI区域裁剪
- Cocos2d-x 3.x节点裁剪以及实现跑马灯
- 一位软件工程师的6年总结
- Handler 基础认识
- 内存对齐的规则以及作用
- 鼠标经过超链接上,元素(li)背景变色的代码
- 字符串相关处理kmp,前缀数,后缀树,后缀数组,最长回文串,最长重复字串,最长非重复字串
- cocos2d-x之区域裁剪
- git常用命令
- codeforces 289 B. Polo the Penguin and Matrix
- java学习资料
- 数据挖掘与数据化运营实战:思路、方法、技巧与应用
- web.config 数据库连接字符串详解
- java String.split(String regstr)
- 刘红杰的播客
- label高度