Подтвердить что ты не робот

Изменение изображения CCSprite

Я создал несколько CCSprites, используя spriteWithFile.

Как изменить изображение для спрайта во время выполнения?

Мне нужно регулярно менять несколько изображений спрайтов.

4b9b3361

Ответ 1

CCTexture *tex = [CCTexture textureWithFile:fileName];
self.texture = tex;

Ответ 2

Если вы используете SpriteSheets, это будет работать.

NSString* newSprite = [NSString stringWithString:@"SPRITE_NAME.png"];
CCSpriteFrameCache* cache = [CCSpriteFrameCache sharedSpriteFrameCache];
[sprite setDisplayFrame:[cache spriteFrameByName:newSprite]];

Ответ 3

[yourSprite setTexture:[[CCSprite spriteWithFile:@"yourImage.png"]texture]];

Ответ 4

В COCOS2D-X вы можете сделать это следующим образом

CCTexture2D *tex = CCTextureCache::sharedTextureCache()->addImage("xyz.png");
sprit_name->setTexture(tex);

iW ВЫ ХОТИТЕ ИЗМЕНЯТЬ РАЗЛИЧНЫЙ РАЗМЕР, ТАК ТАКЖЕ НАПИСАТЬ ЭТУ ЛИНИЮ

sprit_name->setTextureRect(CCRectMake(0,0, tex->getContentSize().width, tex->getContentSize().height));

Ответ 5

i code cocos2D-x в С++: когда вы используете spriteSheet вместо одного файла, вы используете этот метод. предположим, что вы добавили свой spriteSheet в основной слой.

CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("sprite_sheet.plist");
_gameBatchNode = CCSpriteBatchNode::create("sprite_sheet.png", 200);
this->addChild(_gameBatchNode, kMiddleground);

kMiddleground - это только определенное целое число.

то я хочу изменить изображение спрайта, у которого уже есть спрайт с именем "cloud.png" Я использую этот код для этого:

cloud->setDisplayFrame(CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName("blackCloud.png") );

Ответ 6

Для тех, кто использует Cocos2d-iPhone v 3.0.0 или новее

demonSprite.texture = [[CCSprite spriteWithImageNamed:@"steelDemonNormal.png"] texture];

Ответ 7

если вы используете SpriteSheets, тогда это будет работать

CCSpriteBatchNode *batch;
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFrameWithFile:@"file.plist"];

batch = [[[CCSpriteBatchNode alloc] initWithFile:@"file.png"] capacity:50] autorelease];

[self addChild:batch];

Ответ 8

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

Используйте

CCSpriteFrameCache, CCSpriteBatchNode

Итак, вы можете оптимизировать кеш текстуры с еще более разными текстурами, классифицированными в одной текстуре. И все они собраны в один node. Это также уменьшает количество обратных вызовов и увеличивает частоту кадров.

Попробуйте использовать

        [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"Characters.plist"];

    CCSpriteBatchNode* batch = [CCSpriteBatchNode batchNodeWithFile:@"Characters.png" capacity:10];
    [self addChild:batch];

    CCSprite* player1 = [CCSprite spriteWithSpriteFrameName:@"Luce.png"];
    player1.position = ccp(winSize.width * 0.2, winSize.height * 0.8);
    [batch addChild:player1];

и используйте

        CCSprite* player = nil;
    CCARRAY_FOREACH(batch.children, player1) {
        // some computational code and condition
        if (sonecondition) {
            [player1 setDisplayFrame:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"spriteframename.png"]];
        }
    }

в обновлении или в других частях кода

Используйте Zwoptex

TexturePacker для создания зеркальных зеркальных текстур

Надеюсь, что это поможет

Удачи.

Ответ 9

если вы хотите постоянно менять изображения, а затем записывать следующий код в свой метод init

CCTexture2D *tex1 = [[CCTextureCache sharedTextureCache] addImage:@"image1.png"]; CCTexture2D *tex2 = [[CCTextureCache sharedTextureCache] addImage:@"image2.png"]; CCTexture2D *tex3 = [[CCTextureCache sharedTextureCache] addImage:@"image3.png"]; CCSprite *sprite = [CCSprite spriteWithTexture:tex1]; //Make above variables as class level to access in whole class [self addChild:sprite]; //position the sprite according to your need

напишите эту строку, где вы хотите изменить изображение

[sprite setTexture:tex3];

Ответ 10

вам нужно сделать один объект cctexture2d таким образом

CCTexture2D * newtexture = [[CCTextureCache sharedTextureCache] addImage: @ "new-texture" ]; [mainSprite setTexture: newtexture];

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

Ответ 11

Вам просто нужно изменить текстуру своего CCSprite во время выполнения, как это.

[aSprite setTexture:[[CCTextureCache sharedTextureCache] addImage:@"NewImage.png"]];