Pergunta

Eu tenho uma pergunta bastante básica. Eu tenho vários (5) imagens UIImageView sobre minha tela. Quando eu clicar em um botão, eu quero mudar cada imagem a outra coisa. Eu também quero tocar um som que cada imagem é alterada.

Então eu basicamente quer um som de clique como cada imagem muda.

O problema é que, por alguma razão, se eu tiver dizer 5 imagens,
o som é tocada 5 vezes em primeiro lugar e, em seguida, a mudança de imagens.

É como as imagens apenas atualizar quando o controle de volta para o usuário para entrada.

Como posso "força" para atualizar as imagens assim que eu diga a ele o que imagem para exibição?

Eu sou novo para o iphone / Macworld, para ir fácil em mim: -)

Rick

Foi útil?

Solução

É como as imagens apenas atualizar quando o controle de volta para o usuário para entrada.

Isso é exatamente o que acontece. A interface do usuário é atualizado no segmento principal de forma que nenhum atualizações acontecer enquanto seu código está sendo executado.

A fim de alcançar o que você quer, você vai temporizadores necessidade. Dê uma olhada na documentação NSTimer. Você precisa criar um temporizador que dispara um método para alterar a sua segunda imagem e, em seguida, requeue um temporizador para mudar a sua terceira imagem. Não é um método conveniente para criar um temporizador que você precisa: + (NSTimer *)timerWithTimeInterval:(NSTimeInterval)seconds target:(id)target selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)repeats

[NSTimer timerWithTimeInterval:1.0f target:self selector:@selector(updateImage2:) userInfo:nil repeats:NO];

então, você tem um método:

- (void) updateImage2(NSTimer*)theTimer
{

     //Update image 2 here
     // play sound 2 here

    [NSTimer timerWithTimeInterval:1.0f target:self selector:@selector(updateImage3:) userInfo:nil repeats:NO];
}

Vou deixar para você para implementar o método updateImage3:; -)

Running as atualizações como este dá a thread principal a chance de atualizar a interface do usuário.

Outras dicas

Se você está procurando uma forma de atualizar o UIImageView periodicamente, você pode referenciar o seguinte: http://www.shanison.com/2010/12/ 25 / uiimageview-load-remote-image /

Parece que você está provavelmente carregar as imagens fora de disco ou rede ao jogar um som de forma assíncrona. Talvez você estiver usando AudioServicesPlaySystemSound juntamente com UIImage +imageWithContentsOfURL:? O carregamento de imagem e som código real de jogo seria mais útil aqui.

Isso funcionou para mim, quando eu queria mudar o fundo uiimageview e atualizá-la e continuar a executar código depois que:

-(void)imgTapped_event:(UIImageView*)imgViewTapped
{
     imgViewTapped.backgroundColor=[UIColor whiteColor];

     //let the system update ui changes
     [NSRunLoop currentRunLoop]runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.0f]];

     //continue your code execution, play sounds etc...

     //my helper method to play sound
     [self playSound:@"goodAnswer" sync:YES loops:0]; 
 }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top