请问关于重复绘制的方法

  • 本帖最后由 java_vc 于 2012-7-9 02:30 编辑 *

请问重复绘制的方法
碰到要绘制血条,经验条的问题

JAVA中用setClip剪裁区域,然后重复绘制
cocos2dx就茫然了,求达人解答
网上找到个重复绘制背景的方法,但是里面的红字的几个参数不是很清楚。想找个更简洁的方法

CCSize winSize = CCDirector::sharedDirector()->getWinSize();//获得屏幕尺寸,这里要画个和屏幕等大的静态背景
CCRect r(0, 0, winSize.width, winSize.height);
CCSprite* shelfBG = CCSprite::spriteWithFile(RES_BOOK_SHELF_BG, r);// 创建sprite纹理指定循环图片,大小等同屏幕
ccTexParams tp = {GL_LINEAR, GL_LINEAR, GL_REPEAT,GL_REPEAT};//
shelfBG->getTexture()->setTexParameters(&tp);
shelfBG->setPosition(ccp(winSize.width/2, winSize.height/2));
this->addChild(shelfBG);// 添加sprite节点到layer

可以用 CCSprite 的 getTextureRect() / setTextureRect() ?做, 例子:


CCRect rect = sprite->getTextureRect();
rect.size.width -= 2;
sprite->setTextureRect(rect);

为什么我运行 会断言失败呢?:dizzy:

ccTexParams tp = {GL_LINEAR, GL_LINEAR, GL_REPEAT,GL_REPEAT};

这个是设置纹理参数,前两个分别是纹理在缩小和放大时所采用的滤波方式,这里都是线性滤波。
OpenGL的纹理采用ST坐标系,这里后面两个参数分别为S轴和T轴方向上的贴图方式,GL_REPEAT指的是重复纹理。