Я создал несколько CCSprites, используя spriteWithFile.
Как изменить изображение для спрайта во время выполнения?
Мне нужно регулярно менять несколько изображений спрайтов.
Я создал несколько CCSprites, используя spriteWithFile.
Как изменить изображение для спрайта во время выполнения?
Мне нужно регулярно менять несколько изображений спрайтов.
CCTexture *tex = [CCTexture textureWithFile:fileName];
self.texture = tex;
Если вы используете SpriteSheets, это будет работать.
NSString* newSprite = [NSString stringWithString:@"SPRITE_NAME.png"];
CCSpriteFrameCache* cache = [CCSpriteFrameCache sharedSpriteFrameCache];
[sprite setDisplayFrame:[cache spriteFrameByName:newSprite]];
[yourSprite setTexture:[[CCSprite spriteWithFile:@"yourImage.png"]texture]];
В 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));
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") );
Для тех, кто использует Cocos2d-iPhone v 3.0.0 или новее
demonSprite.texture = [[CCSprite spriteWithImageNamed:@"steelDemonNormal.png"] texture];
если вы используете SpriteSheets, тогда это будет работать
CCSpriteBatchNode *batch;
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFrameWithFile:@"file.plist"];
batch = [[[CCSpriteBatchNode alloc] initWithFile:@"file.png"] capacity:50] autorelease];
[self addChild:batch];
Попробуйте использовать текстурированные текстуры для игры, потому что вы используете тот же спрайт, что и со многими экземплярами.
Используйте
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 для создания зеркальных зеркальных текстур
Надеюсь, что это поможет
Удачи.
если вы хотите постоянно менять изображения, а затем записывать следующий код в свой метод 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];
вам нужно сделать один объект cctexture2d таким образом
CCTexture2D * newtexture = [[CCTextureCache sharedTextureCache] addImage: @ "new-texture" ]; [mainSprite setTexture: newtexture];
это все, что нужно сделать, если вы хотите изменить время текстуры изображения спрайта.
Вам просто нужно изменить текстуру своего CCSprite во время выполнения, как это.
[aSprite setTexture:[[CCTextureCache sharedTextureCache] addImage:@"NewImage.png"]];