如何更改精灵宽度并导致更多纹理重复?

时间:2015-06-07 14:36:43

标签: cocos2d-x cocos2d-x-3.0

我有重复纹理的精灵,我想经常更改精灵的宽度,但是这样会导致纹理重复多次,而不是保持相同数量的缩放重复。 这是我用

更改宽度时发生的情况
setScaleX(factor) ;

我还尝试getContentSize()并更改宽度和setContentSize(newContentSize); 但它没有帮助,只是造成奇怪的行为。如何更改精灵宽度并导致更多纹理重复?这有可能吗? (我可以删除当前的精灵并重新创建新的但它看起来像btute force解决方案,我正在寻找更优雅的东西)

1 个答案:

答案 0 :(得分:0)

使用TexParams,例如

Texture2D* tex = Director::getInstance()->getTextureCache()->addImage("CloseNormal.png");
Texture2D::TexParams param = {GL_LINEAR, GL_LINEAR, GL_REPEAT, GL_REPEAT};
tex->setTexParameters(param);
auto size = tex->getContentSize();
auto s = Sprite::createWithTexture(tex, Rect(0,0,size.width * 2, size.height * 2));
s->setPosition(Point(300,300));
this->addChild(s);

或喜欢

auto s = Sprite::create("CloseSelected1.png");
auto size = s->getContentSize();
Texture2D::TexParams param = {GL_LINEAR, GL_LINEAR, GL_REPEAT, GL_REPEAT};
s->getTexture()->setTexParameters(param);
s->setTextureRect(Rect(0, 0, size.width * 2, size.height * 2));
s->setPosition(Point(200,200));
this->addChild(s);