Neste artigo, vamos criar nosso próprio componentes no Flex, para quem nao sabe o que é Flex e nem sobre o que estou falando voce encontra as respostas aqui... , entao vamos la mão a obra!
Foi utilizado nesse artigo:
Primeiramente vamos criar um novo projeto: File=>New=>FlexProject

Daremos o nome do projeto de "CriandoComponenteRelogioDigital" (claro, escolha o nome que voce quiser), deixarei as outras opções como default.
Pronto, nosso projecto esta criado...
Vamos agora iniciar a criação do nosso componente, para ficar organizado, vamos criar um "pacote" (isto mesmo "pacote" igual no java) onde será armazenado todos os nossos componentes, então clique com o botao direito em cima de pasta "src", depois em New=>Package, daremos o nome nesse exemplo de "MeusComponentes" ...
Agora, vamos criar um arquivo do tipo "Action Script Class", clique com o botao direito em cima do nosso recem criado pacote depois em New=>Action Scrip Class, de o nome de "RelogioDigital", deixe as outras opçoes em default e clique em "Finalize", será criado entao nossa classe como no exemplo abaixo:

Agora vamos para a parte boa...
Primeiramente, como estamos criando um relógio digital, o que nada mais é que um label onde este será atualizado a cada segundo com a hora atual, então vamos dizer a essa classe que a mesma irá herdar todas as características de um Label, onde dessa forma poderemos acessar todos os metodos de um Label., fazemos isso adicionando a palavra chave "extends" no final da declaração da classe... fica assim:

Nota que foi adicionado automaticamente o import necessário para encontrar o componente Label.
Agora ja temos o nosso componente label criado, agora vamos implementar um metodo que irá pegar a data atual e alterar a propriedade "text" desse label, esse metodo deverá ser chamado a cada segundo para manter a data atualizada...
Utilizaremos a classe Timer do Flash para atualizar o Label, o que nada mais é que uma thread que ficara executando em segundo plano. Vamos importa entao a classe Timer, a classe Event e TimerEvent do Flash ... ficando assim:

Como podemos ver, a estrutura da classe do Action Script 3 parede muito com a estrutura do java, onde temos a declaração da classe informando sua heranca e temos seu metodo construtor, que é aquele metodo que é chamado quando a classe é instanciada, será nesse metodo que vamos criar a thread e inicia-la, e que por sua vez essa thread ira chamar um método que irá atualizar a propriedade text do nosso Label,, ficando assim:

Agora sim, temos muita coisa interessante, entao vamos la...
Criamos, primeiramente o nosso objeto hora, que é do tipo Timer, sera esse objeto a nossa thread que ficara executando em segundo plano.
Depois, dentro do nosso método construtor, instanciamos o nosso objeto hora informando em quanto tempo que essa thread ira ficar sendo chamada, no exemplo colocamos 1000 milisegundos, ou seja, a cada um segundo esse objeto ira disparar um evento do tipo TimerEvent, logo após, informamos ao objeto que quando esse evento TimerEvent for disparado, vamos chamar o metodo pegarHora.
Esse metodo pegarHora, ira instanciar um objeto do tipo Date e algumas variáveis que serão utilizadas para formar a hora no formato correto, como por exemplo nos dez primeiro segundo e minutos será adicionado o zero antes do numero, para ficar 01, 02 e assim por diante ao inves de 1, 2 ....
Apos isso, criamos dois" if" para testarmos quando deveremos adicionar este zero, pegando através dos metodos getSeconds (retorna um Number contendo o segundo) e getMinutes (retorna um Number contendo o minuto). Após esses teste, e após pegar a hora com o metodo getHours (que retorna um Number contendo a hora) e as devidas conversoes temos nossa string com a hora, minutos e segundo, agora e so setar a propriedade text do nosso Label "RelogioDigital" e pronto! Esta ai nosso componente!... :)
Beleza, temos nosso componente... agora como utiliza-lo??? Isso é a parte mais facil do nosso artigo... vamos ao nosso arquivo "MXML Application" criado dentro do "default package" como o nome "CriandoComponenteRelogioDigital" , se voce tiver seguido a risco esse artigo esse arquivo estará exatamente com esse nome, se nao estará com o nome que seu projeto foi criado, agora caso nao tenha esse arquivo voce pode cria-lo clicando com o botao direito em cima de "default package" depois em New=>MXML Application e adicionar com o nome que preferir....
Dentro de Source do nosso arquivo mxml, vamos adicionar um novo namespace informando onde que o compilador irar encontrar nosso novo componente,,, no caso desse artigo adicionei o sequinte namespace :
Apos os dois pontos (":") da propriedade xmlns, colocamos o "mp" (aqui voce pode utilizar o nome que preferir) refericiando-o ao pacote que esta o nosso componente, após isso através do namespace "mp" encontraremos nosso componente... dessa forma:
Agora sim.. é so rodar a nossa aplicação e esta lá, nosso Label sendo atualizado automaticamente a cada segundo...Dessa forma voce poderá usá-lo em todas as sua aplicações Flex simplesmente adicionando o seu componente ao projeto e indicando seu namespace, aumentando ainda mais sua produtividade....
Claro podemos tambem mudar todas as propriedade do nosso componente como a cor, tamanho, fonte... tudo que temos em um Label normal, diretamenten o mxml ou ainda no nosso arquivo ActionScript, caso queira que essa mudança replique para todos os seus componentes do relogio digital na sua aplicação!
Em algum proximo artigo iremos criar o nosso proprio componente calendario do tipo DateChooser onde iremos personaliza-lo para a lingua portugues... mas isso e assunto para outra hora,,,,
Fica ai entao minha dica! Espero que tenham gostado....
Abraços e ate a proxima!
Aqui voce pode baixar o fonte utilizado no artigo, caso nao consiga deixe um recado!
Olá Theusmpa, achei bem interessante esse código que você nos apresentou. Não conhecia esse programa que você está trabalhando. Vou buscar um pouco mais dele na internet, me parece ser muito bom.
ResponderExcluirKaka
Com certeza é muito interessante.. acabei de postar uns exemplos de aplicações feitas no Flex que é de surpreender!
ResponderExcluirAbs!
o link está com erro..
ResponderExcluirmuito legal seu post..