2011-01-14 4 views
2

В cocos2d использовался метод TextureMgr (Async), который позволяет загружать изображения для последующего использования. Теперь, когда я использую TextureMgr, он говорит, что он не объявлен. Это устарело? Я нахожусь .99.5. Если он больше не используется, что его заменяет? Есть ли что-то, что может сделать то же самое, что и эта строка?Что случилось с TextureMgr?

[[TextureMgr sharedTextureMgr] addImageAsync:...NSString goes here... target:self selector:@selector(method:)]; 

ответ

2

взглянуть на CCTextureCache

http://www.cocos2d-iphone.org/api-ref/0.99.5/interface_c_c_texture_cache.html

может быть, это вы ищете.

Этот кеш используется, когда вы создаете любой объект с текстурой: спрайт, например. И вы можете использовать его для префикса изображений.

EDIT: CCTextureCache используются, когда ваше Создание анг объект с текстурой, как я сказал, - и поэтому, если текстура уже в кэше создание элемента гораздо быстрее, чем если бы вы загружаете текстуру первой а затем создание объекта.

Например, если вы пишете код, как это:

id sprite = [CCSprite spriteWithFile: @"my-file.png"]

и @ «мой-file.png» текстуры не в кэше он будет загружен первым, и это займет некоторое время (намного больше, чем просто создание объекта).

Если вы пишете код, как это:

id sprite1 = [CCSprite spriteWithFile: @"my-file.png"]; 
id sprite2 = [CCSprite spriteWithFile: @"my-file.png"]; 

Тогда sprite1 будет создан медленно и sprite2 гораздо быстрее, потому что текстура уже в кэше.

Вы можете Manuale добавить текстуру в кэш

[[CCTextureCache sharedTextureCache] addImage: @"my-file.png"];

и создание всех объектов с этой текстурой будет быстро.

Общее место в коде, когда требуется текстурировать текстуры, - это загрузка игры или загрузка пакета уровня или загрузка уровня.

Также Вы можете, если звуки кэширования вы должны использовать их SimpleAudioEngine одноплодной

+0

Спасибо, Андрей! Вы также ответили на мой другой вопрос ха-ха, но могли бы вы предоставить немного больше информации об этом? Спасибо;) – Joethemonkey101

1

Эндрю довольно много ответил на ваш вопрос, я просто хочу, чтобы дать вам сегмент кода о том, как использовать CCTextureCache и CCSpriteFrameCache. Текстура Кэш загружает реальные текстуры/изображения и кеш-кадры спрайта загружает информацию о текстурах (если вы загружаете лист спрайта.) Хорошо, вот пример кода.

Здесь lastBurp1-1.pvr.ccz и burpParticles1-1.png являются моими листами спрайтов, и их информация находится в (то же имя) .plist-файлах.

В приведенной ниже функции я загружаю текстуры, а также спрайты (информацию об текстурах).

Также посмотрите файлы pvr и файл pvr.ccz, они загружаются намного быстрее, чем png.

-(void) loadBurpAnimation { 
     NSString* burpFile; 
     NSString* burpFilePVR; 

     NSString* burpParticlesFile; 
     NSString* burpParticlesFilePVR; 

     burpFile = @"latestBurp1-1.plist"; 
     burpFilePVR = @"latestBurp1-1.pvr.ccz"; 
     burpParticlesFile = @"burpParticles1-1.plist"; 
     burpParticlesFilePVR = @"burpParticles1-1.png"; 

     [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:burpFile texture:[[CCTextureCache sharedTextureCache] addImage:burpFilePVR]]; 
     [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:burpParticlesFile texture:[[CCTextureCache sharedTextureCache] addImage:burpParticlesFilePVR]]; 

     NSMutableArray *burpFrames = [NSMutableArray array]; 
     for(int i = 231; i <= 268; ++i) { 
      [burpFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"burp.%d.png", i]]]; 
     } 
     burpAnim = [[CCAnimation alloc] initWithFrames:burpFrames delay:0.04f]; 
     [burpFrames removeAllObjects]; 

     //Burp Particles 
     [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:burpParticlesFile]; 
     NSMutableArray *burpParticlesFrames = [NSMutableArray array]; 
     for(int i = 3; i <= 37; ++i) { 
      [burpParticlesFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"Burp_%05d.png", i]]]; 
     } 

     burpParticlesAnim = [[CCAnimation alloc] initWithFrames:burpParticlesFrames delay:0.04f]; 
     [burpParticlesFrames removeAllObjects]; 
} 

Я просто дал вам много информации, поэтому вам может потребоваться Google.

+0

Спасибо! Похож на полезную информацию :) – Joethemonkey101