Я решил проблему некоторое время назад - только что заметил, что вопрос все еще остается без ответа:
Нам нужна функция makeDoubler
, которая будет копировать текущий кадр, отображаемый в одном спрайте, в другой.Я реализовал его как функцию-член класса, который наследуется от CCSprite
, и выглядит примерно так:
В заголовке
@interface MySprite : CCSprite
{
//...
}
// makes sprite's image the same
-(void) makeDoublerTo:(CCSprite *)sprite;
@end
в реализации
@implementation MySprite
-(void) makeDoublerTo:(CCSprite *) sprite
{
[sprite setDisplayFrame:[self displayedFrame]];
[sprite setScaleX:[self scaleX]];
[sprite setScaleY:[self scaleY]];
[sprite setRotation:[self rotation]];
[sprite setFlipX:[self flipX]];
[sprite setFlipY:[self flipY]];
[sprite setAnchorPoint:ccp(self.anchorPoint.x,self.anchorPoint.y)];
sprite.position = ccp(self.position.x, self.position.y);
}
@end
Вы можете использовать его как:
MySprite *sprite = [CCSprite spriteWithFile:@"Icon.png"];
CCSprite *sdoubler = [[CCSprite alloc] init];
и в игровом цикле (также настройте видимость и координаты):
[sprite makeDoublerTo:sdoubler];
[sdoubler setVisible:YES];
...
Я не использую смешивание и альфа-в этом случае, но вы можете легко расширить функцию makeDoubler
.