×
Namespaces

Variants
Actions
Revision as of 10:22, 14 May 2013 by hamishwillee (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Archived:Como implementar um cronômetro em Flash Lite 3.0

From Nokia Developer Wiki
Jump to: navigation, search

Archived.pngAquivado: Este artigo foi arquivado, pois o conteúdo não é mais considerado relevante para se criar soluções comerciais atuais. Se você achar que este artigo ainda é importante, inclua o template {{ForArchiveReview|escreva a sua justificativa}}.

Não recomendamos o desenvolvimento em Flash Lite para aparelhos atuais da Nokia. Todos os artigos relacionados a Flash Lite foram arquivados. A plataforma Nokia Asha e os aparelhos recentes S40 não possuem mais o Flash Lite. O uso de Flash Lite em Symbian é limitado. Por exemplo, informações relativas à plataforma Nokia Belle podem ser encontradas neste link (em Inglês). Informações específicas de Flash Lite para aparelhos S40 ANTIGOS e Symbian podem ser encontradas na Flash Lite Developers Library (em Inglês).

Article Metadata

Exemplo de código
Compatibilidade
Plataforma(s): Flash Lite

Artigo
Tradução:
Por cristovaodoj
Última alteração feita por hamishwillee em 14 May 2013

Neste post eu irei mostrar como implementar um cronômetro em Flash Lite 3.0, usando ActionScript 2.0 ou 3.0.

Cronômetro de Contagem Regressiva

Primeiramente, nós precisamos construir um designe gráfico da aplicação o qual é composto por cinco (5) campos de texto estático (Static Text) com os seguintes valores: "Days", "Hour", "Minutes", "Seconds" e "Miliseconds"; e um campo de texto dinâmico (Dynamic Text) com nome de instância: "chronometer", como mostrado na figura abaixo:

Chronometer 01.jpg

Agora, o que falta para concluirmos nossa tarefa é codificar o quadro (frame) que contém o cronômetro. Para fazer isso nós precisamos atualizar o cronômetro constantemente para vermos os valores mudando. Na área de ações entre com o código:

this.onEnterFrame = function() {
// everything inside this block will be executed constantly.
};

Tip.pngTip: Solução mais simples para atualização é adicionar mais um frame após o frame atual(deixe o frame atual ser 1, para propósito ilustrativo). No novo frame, simplesmente adicione o código - gotoAndPlay(1);

Razão - Um código executado dentro de onEnterFrame, executa N vezes por segundo- a critério do frame rate. Para o caso de um simples cronômetro isso é desnecessário.

Obs.: Essa maneira executa o código metade das vezes que o anterior.


Então vamos criar um objeto Date com o nome "now" o qual irá representar o exato momento que o codígo irá ser executado, depois disso pegue o valor em milisegundos desse momento usando o método getTime() e então nós teremos como trabalhar melhor com as datas. Faça o mesmo para a data final usando o construtor new Date(ano, mês, dia); Atenção! os valores válidos para os meses variam de 0 (Janeiro) até 11 (Dezembro). Ok, a diferença entre o horário final e o horário atual é a quantidade de milisegundos de agora até a data final. O código ficará parecido com o mostrado abaixo:

var now:Date = new Date();
var current_time = now.getTime();
// Data futura a qual estamos esperando, 31 de Julho de 2010.
var final_date:Date = new Date(2010, 06, 31);
var final_time = final_date.getTime();
var miliseconds = final_time - current_time;

Note.pngNote: Obs.1: As horas, minutos, segundos e milisegundos serão a meia-noite em ponto, porém se você quiser mudá-los basta adicionar novos parâmetros ao construtor de Date. Por exemplo: new Date(2010, 06, 31, 13, 30, 25, 45) significa que a data futura será exatamente em 31 de Julho de 2010 às 13 horas, 30 minutos, 25 segundos e 45 milisegundos.

Nós temos que transformar os milisegundos para dias, horas, minutos e assim por diante. O código a seguir faz isso para nós:

var seconds = Math.floor(miliseconds / 1000);
var minutes = Math.floor(seconds / 60);
var hours = Math.floor(minutes / 60);
var days = Math.floor(hours / 24);

OBS.: Ométodo Math.floor retorna o menor ou igual inteiro mais próximo ao passado como parâmetro.

Agora nós temos a diferença entre a data final e a data corrente em todas as formas que queríamos, milisegundos, segundos, minutos, horas e dias. Entretanto, ainda há uma tarefa para concluir nosso cronômetro de contagem regressiva: transformar esses valores em tempo real, como vemos nos relógios digitais. O código mostrado abaixo faz essa transformação:

//The Dynamic Text variable chronometer receives the transformed time
chronometer.text = (days % hours % 365) + " : " + (hours % minutes % 24) + " : " + (minutes % seconds % 60) + " : " + (seconds % miliseconds % 60) + " : " + (miliseconds % 1000);

Finalmente o cronômetro de contagem regressiva está completo e lembre-se: todo o código mostrado acima deve estar dentro da função.

Cronômetro de Tempo Decorrido

bem, acima eu ensinei como implementar um cronômetro de contagem regressiva. Agora eu ensinarei como modificá-lo para que ele torne-se um cronômetro de tempo decorrido. Primeiramente você precisa criar uma variável chamada "begin_time" fora do função "onEnterFrame"; assim:

var begin_time = new Date().getTime();

O segundo passo consiste em obter a diferença entre "begin_time" e "current_time"; Note que o cronômetro anterior fazia a diferença de "final_time" menos "current_time". Dentro da função "onEnterFrame" modifique "var miliseconds = final_time-current_time" por:

var miliseconds = current_time - begin;

O terceiro, e último passo, é mudar o código que insere os valores no campo de texto dinâmico disso:

chronometer.text = (days%hours%365)+" : "+(hours%minutes%24)+" : "+(minutes%seconds%60)+" : "+(seconds%miliseconds%60)+" : "+(miliseconds%1000);

para isso:

chronometer.text = (days%365)+" : "+(hours%24)+" : "+(minutes%60)+" : "+(seconds%60)+" : "+(miliseconds%1000);

Parabéns! O cronômetro de tempo decorrido está feito e funciona bem.


Código Fonte para Download

This page was last modified on 14 May 2013, at 10:22.
50 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×