Cocos2d-x 重写draw方法绘制直线等图形时被遮挡覆盖问题的一种解决方案
2013-10-10 20:25
435 查看
最近在学习过程cocos2dx的过程中需要使用到绘制直线的功能,所以我就采用了引擎中 ccDrawLine 方法,然后重写 draw 方法,在该方法中绘制直线。
但是出现了一个问题,那就是绘制的图形被覆盖了。什么意思呢?
我在界面中已经添加了一个sprite背景,那么我希望绘制的直线是在背景之上的,但是结果是:界面中并没有显示出直线;实际上是被sprite背景覆盖住了。
那么怎么办呢?
问题的分析:
1、首先我们定位到sprite背景:
注意到这个sprite添加的zOrder是1。
2、那么你可能会想到,修改直线的zOrder大于1,不就可以解决吗?可是,绘制直线等之类是无法设置zOrder的。而实际上我们绘制的直线它的zOrder是等于0的。(为什么说是等于0呢?下面会解释)
3、那么反过来,我们把sprite的zOrder修改的小一些,那么不就可以了吗?在前一点我提到绘制的直线它的zOrder是等于0;那么我们把sprite背景的zOrder改成小于0,不就可以了吗?
4、试一下,我们将sprite的zOrder=-1看看。
问题解决。
综上,我们得出一个对该问题的解决思路:
就是将需要绘制直线所在layer里面全部的其他节点的zOrder修改成比0小的,那么所绘制的直线就会出现在最顶层,这样就显示出来了。
但是出现了一个问题,那就是绘制的图形被覆盖了。什么意思呢?
我在界面中已经添加了一个sprite背景,那么我希望绘制的直线是在背景之上的,但是结果是:界面中并没有显示出直线;实际上是被sprite背景覆盖住了。
那么怎么办呢?
问题的分析:
1、首先我们定位到sprite背景:
// add "HelloWorld" splash screen" CCSprite* pSprite = CCSprite::create("HelloWorld.png"); // position the sprite on the center of the screen pSprite->setPosition( ccp(size.width/2, size.height/2) ); // add the sprite as a child to this layer this->addChild(pSprite, 1);
注意到这个sprite添加的zOrder是1。
2、那么你可能会想到,修改直线的zOrder大于1,不就可以解决吗?可是,绘制直线等之类是无法设置zOrder的。而实际上我们绘制的直线它的zOrder是等于0的。(为什么说是等于0呢?下面会解释)
3、那么反过来,我们把sprite的zOrder修改的小一些,那么不就可以了吗?在前一点我提到绘制的直线它的zOrder是等于0;那么我们把sprite背景的zOrder改成小于0,不就可以了吗?
4、试一下,我们将sprite的zOrder=-1看看。
问题解决。
综上,我们得出一个对该问题的解决思路:
就是将需要绘制直线所在layer里面全部的其他节点的zOrder修改成比0小的,那么所绘制的直线就会出现在最顶层,这样就显示出来了。
相关文章推荐
- CCScale9Sprite的用法
- cocos2dx入门
- cocos2dx中js绑定的回调
- 备忘一下群里讨论的东西
- Mac下使用Xcode集成Cocos2d-x的Ios与Android开发环境(Base on 2.1.3)
- 整合Cocos2dX的Android项目到Xcode项目中,Xcode编写&编译代码
- cocos2dx[android] 环境搭建
- 关于标准C文件流读写问题:fopen,fread,fwrite,fclose的一些注意事项
- cocos2dx左下角三行数值意义
- cocos2d-x 实现clash of clans多点聚焦缩放场景
- Cocos2d-x +Android + Windows 7环境配置
- cocosbuilder 游戏动画开发利器-值得注意的几个细节
- 记录配置cocos2dx android eclipse编译环境 in win7
- 新版本cocos2d-x工程项目的创建(本版本为cocos2d-x_v2.1.5b)
- Cocos2d-x在windows下实现全屏(cocos2d-x+win32+fullScreen)
- cocos2d-x 回调函数
- w7 +eclipse +sdk + ndkr9 +cocos2dx 配置
- 一个cocos2dx 游戏解读(AppDelegate)
- 一个cocos2dx 游戏解读(SceneStart)