0

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

我有两张图片,一张是 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];

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

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

4

1 回答 1

0

设置纹理时,还应该调用

-(void) setTextureRect:(CGRect) rect;

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

于 2013-07-10T06:37:00.630 回答