改变纹理:意外缩放结果

时间:2013-07-10 06:27:57

标签: cocos2d-iphone

我无法理解这里发生的事情,我知道我是愚蠢的,但这里有什么事情发生了:

我有两张图片,一张是1024x768,一张是2048x1536。它们是“背景”纹理。我正试图从一个纹理切换到另一个纹理:

CCSprite *bg = [CCSprite spriteWithFile:@"one.jpg"];
bg.scale = 0.5;
[self addChild:bg];
...
CCTexture2D* tex = [[CCTextureCache sharedTextureCache] addImage:two.jpg];
[bg setTexture: tex];

确定这是完全正常的,尽管是不同的分辨率,但第二张图像完全符合第一张图像的精确空间和尺寸。现在我正在添加第二张图像,这样我就可以让第一张图像淡入第二张图像

CCSprite *newBG = [CCSprite spriteWithFile:@"two.jpg"];
newBG.scale = bg.scale;
[self addChild: newBG];

然而,这不起作用,图像是它应该的两倍大。

那究竟发生了什么?我可以猜测当从图像创建精灵时,精灵的大小设置,然后应用的任何纹理自动缩放以适应空间,第二个不起作用,因为新创建的精灵使用不同的大小的图像?

1 个答案:

答案 0 :(得分:0)

设置纹理时,还应调用

-(void) setTextureRect:(CGRect) rect;

设置其大小。这会在initWithTexture中自动调用,但不会在您调用setTexture时自动调用。所以,你的假设是正确的:当你初始化精灵时设置纹理大小而不是之后改变;但是当你想使用新的纹理时可以改变它。