Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

guiobom131

[Resolvido] Relógio feito com ActionScript

Recommended Posts

Olá galera, vou fazer um relógio em 50 linhas com ActionScript (quem quiser o .fla me manda um e-mail), vamos lá:

Abra um novo documento e no primeiro key-frame digite o código:

//Cria o círculo de fundo e configura cor e posição

createEmptyMovieClip("fundo", 1);

fundo.lineStyle(1, 0x000000, 100);

fundo.beginFill(0xFFFFCC, 100);

fundo.moveTo(0, -100);

fundo.curveTo(100, -100, 100, 0);

fundo.curveTo(100, 100, 0, 100);

fundo.curveTo(-100, 100, -100, 0);

fundo.curveTo(-100, -100, 0, -100);

fundo.endFill();

fundo._x = 275;

fundo._y = 200;

//Cria um quadrado que será o centro do relógio, de onde os ponteiros irão sair

createEmptyMovieClip("centro", 2);

centro.beginFill(0x000000, 100);

centro.moveTo(-5, -5);

centro.lineTo(5, -5);

centro.lineTo(5, 5);

centro.lineTo(-5, 5);

centro.lineTo(-5, -5);

centro.endFill();

centro._x = 275;

centro._y = 200;

//Cria o ponteiro dos segundos com tamanho 75

createEmptyMovieClip("s", 3);

s.lineStyle(1, 0x000000, 100);

s.lineTo(0, -75);

s._x = 275;

s._y = 200;

//Duplica o ponteiro dos segundos e instancia-o de "min", com tamanho 60

duplicateMovieClip(s, "min", 4);

min._height = 60;

//Duplica o ponteiro dos segundos e instancia-o de "h", com tamanho 45

duplicateMovieClip(s, "h", 5);

h._height = 45;

//Cria o campo de texto onde ficará o relógio digital

createTextField("digital", 6, 0, 300, 550, 30);

digital.selectable = false;

//Determina o tamanho da fonte e centraliza o texto;

formato = new TextFormat();

formato.size = 20;

formato.align = "center";

digital.setNewTextFormat(formato);

onEnterFrame = function () {

//Cria uma nova data que terá o horário do sistema

dataDoSistema = new Date();

//Determina o valor dos segundos, minutos e horas

segundos = dataDoSistema.getSeconds();

minutos = dataDoSistema.getMinutes();

horas = dataDoSistema.getHours();

//Determina a rotação dos ponteiros, explico um pouco mais a seguir

s._rotation = segundos*6;

min._rotation = minutos*6+segundos/10;

h._rotation = horas*30+minutos/2+segundos/120;

//Faz com que as variáveis que irão compôr o relógio digital tenham dois dígitos, ou seja, se for menor que dez irá colocar um "0" na frente

horas2 = (horas<10) ? ("0"+horas) : (horas);

minutos2 = (minutos<10) ? ("0"+minutos) : (minutos);

segundos2 = (segundos<10) ? ("0"+segundos) : (segundos);

//Determina o que estará escrito no campo de texto criado anteriormente

digital.text = horas2+":"+minutos2+":"+segundos2;

};

Pronto! É só publicar!

 

 

Vou explicar sobre o cálculo da rotação dos ponteiros, basta usar regra de três:

 

Ponteiro dos segundos:

60s ---------- 360º (uma volta completa tem 60s)

segundos --- s._rotation

s._rotation = segundos*360/60 = segundos*6;

 

Ponteiro dos minutos:

60 min ---- 360º(uma volta completa tem 60min)

minutos --- min._rotation

min._rotation = minutos*360/60 = minutos*6;

Lembre-se que os segundos influenciam o ponteiro dos minutos

3600s ------- 360º(uma volta completa dos minutos, 60min, tem 3600s)

segundos --- min._rotation

min._rotation = segundos*360/3600 = segundos/10;

min._rotation = minutos*6+segundos/10;(a soma das duas regras de três)

 

Ponteiro das horas:

12h ----- 360º(uma volta tem 12h)

horas --- h._rotation

h._rotation = horas*360/12 = horas*30;

Lembre-se que os minutos influenciam o ponteiro das horas

720min --- 360º(uma volta do ponteiro das horas, 12h, tem 720min)

minutos --- h._rotation

h._rotation = minutos*360/720 = minutos/2;

Lembre-se que os segundos influenciam (minimamente) o ponteiro das horas

43200s ----- 360º(uma volta do ponteiro das horas, 12h, tem 43200s)

segundos --- h._rotation

h._rotation = segundos*360/43200 = segundos/120;

h._rotation = horas*30+minutos/2+segundos/120;(a soma das três regras de três)

 

Qualquer dúvida por favor me informem. Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.