Jump to content


Photo

Tempo Correndo!


  • Faça o login para participar
4 replies to this topic

#1 thiago_costabr

thiago_costabr

    12 Horas

  • Usuários
  • 200 posts
  • Sexo:Não informado

Posted 09/09/2004, 09:33

Pessoal,

É o seguinte... Eu quero fazer um timer para o meu player mas não quero copiar nenhum script que já está pronto. Eu quero usar a lógica que tenho e fazer da forma como acho que é.

É o seguinte... a ídeia seria pegar o minuto inicial e segundo inicial e acrescenter 1 toda vez que o quadro for atualizado. Simples! Mas ele está correndo muito rápido.. ele não está indo em segundo e segundo... Alguém pode me ajudar como fazer o tempo correr em segundo e segundo?

Olhem o código que fiz abaixo:

min_inicial = 0;
seg_inicial = 0;

this.onEnterFrame = function(){
	tempo.text = min_inicial++;
	if(min_inicial==10){
  tempo.text = "Acabou!";
  delete this.onEnterFrame;
	}
}

Obrigado,
Fiquem com Deus!

Att,
Thiago C.

#2 Thyago Mendes

Thyago Mendes

    ActionScript

  • Usuários
  • 161 posts
  • Sexo:Não informado
  • Localidade:Recife - PE

Posted 09/09/2004, 10:25

Sem modificar sua lógica basta você calcular colocando a diferença do fps, exemplo: digamos q seu filme esteja rodando a 12 quadros por segundo.... então vc deveria fazer o calculo da seguinte maneira:

para escrever no txt
tempo.text = min_inicial/12

na comparação que checa se ele é igual a 10 segundos
++min_inicial == 10*fps

assim vc terá o valor (lembranbdo que essa calculo pode não ser preciso, vai depender do processamento do computador)

você poderia também arredondar o valor para não ficar um número muito quebrado, utilizando Math.round

tempo.text = Math.round(min_inicial/12)

abaixo segue o código com essas modificações
var min_inicial:Number = 0, seg_inicial = 0, fps:Number = 12;
this.onEnterFrame = function() {
	tempo.text = Math.round(min_inicial/fps);
	if (++min_inicial == 10*fps) {
  tempo.text = "Acabou!";
  delete this.onEnterFrame;
	}
};

//poderia também utilizar setInterval

tempo.text = 0;
var intervalo:Number = setInterval(function () {
	if (parseInt(tempo.text) == 10) {
  clearInterval(intervalo);
  trace("acabou");
	}
	tempo.text = parseInt(tempo.text)+1;
}, 1000);

espero que tenha ajudado.

#3 thiago_costabr

thiago_costabr

    12 Horas

  • Usuários
  • 200 posts
  • Sexo:Não informado

Posted 09/09/2004, 10:39

Obrigado Thyago!

Ficou legal!

Mas por acaso existe alguma outra forma mais precisa para fazer isso?

Abraços,
Thiago C.

#4 thiago_costabr

thiago_costabr

    12 Horas

  • Usuários
  • 200 posts
  • Sexo:Não informado

Posted 14/09/2004, 09:18

E aí Thyago, pessoal!

Agora surgiu uma dúvida . . .
Como eu posso fazer esse tempo "pausar" quando eu acionar um botão? Tipo, o tempo está correndo enquanto toca a música mas quando a pessoa clica no botão "pause" o tempo obviamente tem que parar também. Alguém sabe como fazer? Existe algum comando para pausar um "EnterFrame" como:

pause this.onEnterFrame;

Eu tentei esse código aí em cima mas não deu certo ou talvez eu não esteja usando da forma correta!

Obrigado,
Att,
Thiago C.

#5 Thyago Mendes

Thyago Mendes

    ActionScript

  • Usuários
  • 161 posts
  • Sexo:Não informado
  • Localidade:Recife - PE

Posted 14/09/2004, 20:02

thiago

um pequeno exemplo, mas que pode te ajudar....
Baseado no código anterior
//Estou copiando a referência do movieClip que esta utilizando o onEnterFrame para contar o tempo
var $this:MovieClip = this;
pause_btn.onRelease = function() {
  //Copio a referência do onEnterFrame
  $this.$onEnterFrame = $this.onEnterFrame;
  //Deleto o evento onEnterFrame
  delete $this.onEnterFrame;
};
play_btn.onRelease = function(){
  //aplico ao evento a referência copiada anteriormente
  $this.onEnterFrame = $this.$onEnterFrame;
}

Espero ter ajudado




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq