2013-07-10 4 views
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]; 

ОК это совершенно нормально, второе изображение отлично вписывается в то же самое точное пространство и размеры первых, несмотря на то, другое разрешение. Теперь я хочу добавить 2-ое изображение так, что я могу иметь первое один замирание во второй

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

Это, однако, не работает, то изображение в два раза больше, как это должно быть.

Так что же здесь происходит? Насколько я могу догадаться, когда создается спрайт из изображения, задается размер спрайта, а затем любая текстура, применяемая автоматически, масштабируется, чтобы соответствовать пространству, а вторая не работает, потому что недавно созданный спрайт использует другую размер изображения?

ответ

0

При установке текстуры, вы должны также вызвать

-(void) setTextureRect:(CGRect) rect; 

установить его размер. Это автоматически вызывается в initWithTexture, но не тогда, когда вы просто вызываете setTexture. Итак, предположение верно: размер текстуры задается при запуске спрайта, а затем изменений; но вы можете изменить его, если хотите использовать новую текстуру.

Смежные вопросы