2012-02-12 3 views

ответ

1

Просто создать несколько спрайтов (CCSprite экземпляров). Они могут использовать одну и ту же текстуру (bitmap-файл).

CCSprite * mySprite1; 
CCSprite * mySprite2; 
CCSprite * mySprite3; 

// create several sprites from the same bitmap file 
mySprite1 = [CCSprite spriteWithFile:@"spriteBitmap.png"]; 
mySprite2 = [CCSprite spriteWithFile:@"spriteBitmap.png"]; 
mySprite3 = [CCSprite spriteWithFile:@"spriteBitmap.png"]; 

mySprite1.position = ccp(100, 100); 
mySprite2.position = ccp(200, 200); 
mySprite3.position = ccp(300, 300); 
0

Вы не можете добавить такое же CCSprite как ребенок к нескольким CCNodes, но вы можете сделать Cocos2D сделать то же CCSprite несколько раз. Для этого вам нужно создать подкласс CCNode, который сохранит ссылку на ваш CCSprite и нарисует его в методе -draw с применением необходимых преобразований. Например

-(void)draw 
{ 
    [super draw]; 

    CGPoint initialPosition = [_node position]; 
    float initialScale = [_node scale]; 

    [_node setScale:self.scale]; 
    [_node setPosition:self.position]; 
    [_node visit]; 
    [_node setPosition:initialPosition]; 
    [_node setScale:initialScale]; 
} 

Вы, возможно, придется использовать glScissor, если вам нужна картинка-в-картинке внешний вид.

Тогда вам просто нужно добавить экземпляр класса thisChild для каждого раза, когда вы хотите получить дополнительную копию оригинального рендеринга CCSprite.

0

Положить метод в цикл for.

Внутри метода создайте CCSprite и измените его.

Это лучше всего подходит для статических спрайтов, так как я не знаю, как вы могли бы получить доступ к этим за пределами метода.

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