2013-07-10 13 views
0

我不能讓我的身邊怎麼在這裏上的頭,我知道我是愚蠢的,但這裏是怎麼回事:改變質地:意外規模的結果

我有兩個圖像,一個是1024×768,一個是2048x1536。他們是「背景」紋理。我試圖切換從一個紋理其他:

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

OK,這是完全正常的,第二圖像完美地融入完全相同的空間和第一的尺寸,儘管是不同的分辨率。現在我加入了第2幅圖像,所以我可以有第一個淡出人們的第二個

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

然而,這是不行的,圖像的兩倍大,因爲它應該是。

那麼究竟發生了什麼?我最好的猜測是什麼時候從圖像創建一個精靈,設置精靈的大小,然後自動應用任何紋理縮放以適應空間,而第二個不起作用,因爲新創建的精靈正在使用不同的大小的圖像?

回答

0

當您設置一個紋理,你也應該叫

-(void) setTextureRect:(CGRect) rect; 

設置其大小。這會自動在initWithTexture中調用,但不會在您簡單地撥打setTexture時調用。所以,你的假設是正確的:當你初始化精靈時紋理大小被設置,並且之後不會改變;但是當你想使用新紋理時你可以改變它。