Как иметь один и тот же спрайт в нескольких местах Cocos2d - PullRequest
1 голос
/ 12 февраля 2012

Как получить один и тот же спрайт в нескольких местах Cocos2d Пожалуйста, помогите. Я искал все и не могу найти ответ

Ответы [ 3 ]

1 голос
/ 16 февраля 2012

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

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 голосов
/ 31 мая 2013

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

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

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

0 голосов
/ 08 декабря 2012

Вы не можете добавить один и тот же CCSprite в качестве дочернего к нескольким узлам CCNode, но вы можете заставить 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, если вам нужен внешний вид «картинка в картинке».

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

...