2 wdany wdany 于 2013.06.30 10:13 提问

cocos2d-x 如何设置让精灵移动超出父节点的的范围的部分不显示

我想在精灵移动,但是超出父节点的显示范围就不显示,怎么实现啊

2个回答

xujiayin
xujiayin   2013.07.02 07:01
已采纳

要对超出部分实现"裁剪"

覆盖CCNode的函数void visit();

void visit()//此方法为绘制时调用,系统每帧调用
{
glEnable(GL_SCISSOR_TEST);//这句启用纹理裁剪

//这里要根据CCNode 的位置 和父类的大小 来计算具体的裁剪区域
glScissor(0, 0, 100, 100);//x, y, w, h 

CCNode::visit();//调用自己的类方法
glDisable(GL_SCISSOR_TEST);//管理纹理裁剪
}
liyong748
liyong748   2013.08.05 23:06

也可以使用遮罩层技术,即只显示遮罩层中的部分,这种技术可以显示不规则图形的遮挡

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
cocos2d-x 坐标系总结(从如何判断精灵是否在屏幕可见范围谈起)
萌生系统了解这方面的问题这个念头, 是因为今天刚遇到的一个问题。 最近在写一个跑酷游戏,基于cocos2d-x。  在死亡判断的时候,有一个情况,就是主角被移出了屏幕可见范围,则判断为死亡。(玩过天天酷跑的都知道吧) 本来一个很简单的问题,却因为自己学习的不够系统,折腾了半天。 因为我的主角(sprite)的父类是地图(map),而不是直接加到游戏场景中(scence)。所以,我通过getP
Cocos2d-x 2.0 百例精讲:如何让一个精灵跟随触点移动
红孩儿Cocos2d-x学习园地教学资料由 [红孩儿游戏编程教学组] 组织编写.版权所有,盗文必究! 如何让一个精灵跟随触点移动                                             本节主讲:红孩儿 [注:本版使用Cocos2d-x 2.02版本] 如何让一个精灵跟随触点移动?本节我们以HelloCpp为例来讲解一下。 第一
ios子控件超过了父控件的frame范围,超过的部分不显示
设置父控件的clipToBounds 为 YES 即可,默认为 NO. 同时还应该考虑 CALayer 的 maskToBounds 的功能是什么,类似于 clipToBounds 吗?maskToBounds 是 CALayer 的属性,基于 View 的不少属性其实就是作用于 CALayer 的。立即试验了一下,设置blueView.layer.maskToBounds = YES 与 bl
让label等text内容超出部分为...
加上以下样式。 overflow:hidden; text-overflow: ellipsis; white-space: nowrap; 需要注意的是最后一个white-space: nowrap;经常忘记掉而不知道为什么不出来点点点。
实现div内部文字,一旦超出div的范围,就不显示,并且超出的用"..."显示
当内部不足以填充满整个div的时候,文字内容以居中显示,当内超出范围就截断,多出的部分并以.。。。来代替。 方法1:只用CSS样式进行控制,但是找个方法的兼容性不知道怎么样,反正在火狐11上是成功了!上代码 div id="gaoshi1" style="WORD-WRAP: break-word"> 只写整个是不行的,效果应该就是截断,记住div一定要设定width和hight; 最后要
cocos2d中让视角根据主角精灵移动
用TiledMap创建地图时,有时候地图很大,超过屏幕显示范围,就要求视角始终跟随主角精灵移动,让主角精灵始终位于屏幕视图的中央 在下面示意图中,初始时,显示窗口位于TiledMap的左下角部分,当主角精灵的位置位于显示窗口之外时,需要移动显示窗口,让精灵位于显示屏幕的中央,由于map是作为子节点添加在CCLayer层上的,因此只用重设CCLayer的位置能达到效果。 这里特殊情况(见
Cocos2d-x 单点触摸--让精灵随手指移动起来
效果图: 程序代码: bool HelloWorld::init() { ////////////////////////////// // 1. super init first if ( !CCLayer::init() ) { return false; } CCSize visibleSize =
Cocos2d设置精灵触摸范围
void HelloWorld::ccTouchesBegan(CCSet *pTouches, CCEvent *pEvent){ CCTouch *touch = (CCTouch *)pTouches->anyObject(); CCPoint beginLoc = touch->locationInView(); beginLoc = CCDirector::sharedDir
CSS 设置超过显示范围用 ... 代替
overflow: hidden; text-overflow:ellipsis; white-space: nowrap;
canvas超出部分隐藏
-