Pergunta

Eu tenho uma seqüência de imagens necessários para exibição em um curto espaço de tempo (seqüência PNG). Existem no total 31 PNGs no total, cada um com tamanho de arquivo sobre 45KB. Eu já ter carregado-los com os seguintes códigos:

imgArray = [[NSMutableArray alloc] init];
for(int i = 0; i <= 30; i++) {
    NSString * filename = [NSString stringWithFormat:@"img_000%.2d.png", i];
    UIImage *temp = [UIImage imageNamed:filename];
    [imgArray addObject:temp];
    [temp release];
    temp = nil;
} 

Eu uso os seguintes códigos para exibir as imagens:

CGImageRef image = [(UIImage *)[imgArray objectAtIndex:imgFrame] CGImage];
imgLayer.contents = (id)image;
if(imgFrame < 29) {
    imgFrame++;
} else {
    imgFrame = 0;
    imgLayer.hidden = TRUE;
    [imgTimer invalidate];
}

onde imgLayer é um CALayer. (ImgTimer é um temporizador de repetição com 0,03s de intervalo)

Mas descobri que quando eu chamo as imagens para fora, é muito vagaroso no primeiro tempo. Exceto o 1º aparência, outra aparência não tem nenhum problema.

Está relacionado com o pré-carregamento de imagens? Ou são minhas imagens muito grande no tamanho do arquivo?

Foi útil?

Solução

A razão para suas defasagens são difíceis de dizer, sem perfil de dados. Mas aqui é um truque que pode ajudar: Junte-se a todas as suas imagens em um arquivo grande. Tente fazer isso retangular (talvez 6x6 no seu caso ou 4 * 8). Em seguida, carregar esse arquivo único e recortar cada imagem para a exposição (ou seja, criar uma imagem para exibição com o tamanho de uma telha e copiar uma telha a partir da imagem grande após o outro para a imagem da tela).

Outras dicas

As imagens são carregadas quando eles são usados ??e exibidos. Se você usar o profiler vez em Instruments, você vai ficar para o que você está experimentando. Se você, em seguida, aplicar o zoom nessa lag e olhar para o que está causando isso, normalmente você vai ver que "copyImageBlockSetPNG" é o momento função tomada, logo antes de "inflar".

O que você deve encontrar uma maneira de fazer é criar suas imagens e força de carga-los antes de precisar deles. Isso é outra história aparentemente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top