LUIZ HERRERA (117 pts)

ÉMERSON ROCHA (85 pts)

GUILHERME G.G. (137 pts)

MARCOS JOSÉ PINTO (44 pts)

GUILHERME SCHEIBE (49 pts)

JONAS GALVEZ (521 pts)

MARLOS ALVES CARMO (90 pts)

DAUTON JANOTA (255 pts)

AMAURY BENTES (123 pts)

JOTA LAGO (40 pts)

PANDOGO (82 pts)

SASHA GUDEY (235 pts)
Treinamento PontoFlash de Flash e ActionScript

Como trabalhar com o onLoad em arquivos externos no MX?

Função chamada createFunctionCall, que permite criar uma função para executar uma outra função com certos parâmetros.

Não consigo enviar uma ação de dentro de um movieclip para outro. Eles estão em frames diferentes na timeline principal.

Como faço um olho ficar apontando para o ponteiro sem se deslocar?

Há como usar o loadMovie para abrir os thumbs um ao lado do outro?

Me ensinem a fazer um relógio digital em flash5 usando actions.

Como identificar o ponto de registro em um objeto criado por actionscript no MX?

Como tornar palavras inseridas em um scroll em links clicáveis?

Tenho dúvidas de como fazer um Load Movie.

Script que chama o método play(); em todos os movieClips filhos de um movieClip.

Gostaria de saber se existem plugins para flash.

Como eu faço de um layer uma descrição de uma foto?

Preciso converter elementos de uma string separada por vírgulas em um Array!

Quero inserir um swf dentro de uma apresentação do PowerPoint.
Sistema de busca utilizando Flash + ASP .

Controle de MovieClip via Microphone.get();

Como enevoar as bordas de uma imagem no Fireworks.

Um contador Flash + PHP

Scanline no PhotoShop.

Integração Flash + Fireworks

Máscara percorrendo um caminho.

O desenho animado abrindo sites.

Gerando XLS a partir de ASP

Desenvolvendo um Controle de Volume Customizado em Flash

Objeto Movieclip - Propriedades

Componentes no Flash MX 2004
Worms 3d

Motionguidemask2

Simples HitTest

Upperfirstletter

Imageviewer

MC menu

Texto girando

Animação frame by frame

Roll Image

3d All

Slicemenu 2

Natal Noel
HOME | TUTORIAIS
Calendário dinâmico
por Luiz Avanzi

O arquivo nasceu da idéia de criar um calendário permanente e gráfico.

Tá, o leiaute que vocês vão ver não é sofisticado, mas fazendo um bom equilíbrio entre cores e fontes você pode personalizar de maneira bem eficiente e simpática o seu calendário

Por que TextFields e não MovieCLips?

Simples. Para figuras retangulares com preenchimento sólido, e que não vão desempenhar nenhum outro papel, a não ser exibir os textos e colocarem-se no local determinado, os TextFields bastam. O objeto Texto é um recurso poderoso do Flash, com muitos métodos, que combinados com alguns eventos e ações criam um efeito bastante impressionante e com um tamanho em kb incrivelmente pequeno. Bom vamos deixar de balela e vamos ao trabalho. Nosso arquivo é totalmente dinâmico e não vamos utilizar nada mais que códigos, então, mãos à obra! Coloque esse código no primeiro frame. Na parte de baixo do artigo o código está todo comentado.

semanas = ["segunda", "terça", "quarta", "quinta", "sexta", "sábado", "domingo"];
meses = ["jan", "fev", "mar", "abr", "mai", "jun", "jul", "ago", "set", "out", "nov", "dez"];
largDia = 15;
largSemana = 68;
largMes = 38;
largura = 500;
posx = (largura-largDia)/30;
posx_se = (largura-largSemana)/6;
posx_me = (largura-largMes)/11;
nd = new Date();
estilo = new TextFormat();
estilo.font = "arial";
estilo.color = 0xffffff;
estilo.size = 10;
estilo.align = "center";
for (i=1; i<=31; i++) {
   createTextField("diames"+i, i, posx*(i-1), 25, largDia, 18);
   with (this["diames"+i]) {
      text = i;
      background = true;
      backgroundColor = 0x006666;
      setTextFormat(estilo);
   }
   eval("diames"+nd.getDate()).backgroundColor = 0xff0000;
}
for (b=1; b<=7; b++) {
   createTextField("diasemana"+b, b+50, posx_se*(b-1), 0, largSemana, 18);
   with (this["diasemana"+b]) {
      text = semanas[b-1];
      background = true;
      backgroundColor = 0x006666;
      setTextFormat(estilo);
   }
   eval("diasemana"+nd.getDay()).backgroundColor = 0xff0000;
}
for (c=1; c<=12; c++) {
   createTextField("mensal"+c, c+100, posx_me*(c-1), 50, largMes, 18);
   with (this["mensal"+c]) {
      text = meses[c-1];
      background = true;
      backgroundColor = 0x006666;
      setTextFormat(estilo);
   }
   eval("mensal"+(nd.getMonth()+1)).backgroundColor = 0xff0000;
}
createTextField("ano", 77, 0, -25, largura, 18);
with (ano) {
   text = nd.getFullYear();
   background = true;
   backgroundColor = 0xff0000;
   setTextFormat(estilo);
}

Passo a passo

Primeiro criamos arrays que terão como conteúdo as strings que queremos que sejam exibidas no calendário

semanas = ["segunda", "terça", "quarta", "quinta", "sexta", "sábado", "domingo"];

primeiro os dias da semana*/

meses = ["jan", "fev", "mar", "abr", "mai", "jun", "jul", "ago", "set", "out", "nov", "dez"];
depois os nomes dos meses

Agora vamos declarar algumas variáveis que vão nos servir mais a frente:

largDia = 15;
valor da largura dos TextFields que exibirão os dias do mes

largSemana = 68;
valor da largura dos TextFields que exibirão os dias da semana

largMes = 38;
valor da largura dos TextFields que exibirão os meses

largura = 500;
total da largura do seu calendário

posx = (largura-largDia)/30;
esta eqüação simples dá o valor da distância entre o "zero" de cada textField que exibe os dias do mês em relação ao próximo. A vantagem de usar equações nestes casos é que não é necessário recalcular tudo quando de repente você resolve alterar a largura do seu calendário, basta que você altere o valor das variáveis e tudo se acomoda certinho. A equação é (largura total - largura do bloco) dividida pelo número de intervalos que existirá entre o total de blocos, como veremos adiante o total de blocos será 31, então teremos 30 intervalos

posx_se = (largura-largSemana)/6;
Aqui é exatamente o mesmo reaciocínio e procedimento do código acima, mudando apenas os valores, devido ao número diferente de blocos

posx_me = (largura-largMes)/11;
idem acima

nd = new Date();
Aqui é criado um objeto Date(), para que sejam utilizados alguns de seus métodos (getDate(), getMonth() e getFullYear()) na seleção dos textFields que serão destacados na exibição do calendário

estilo = new TextFormat();
Criamos agora o objeto TextFormat() e utilizamos algumas de suas propriedades para deixar o texto da maneira que nos convém

estilo.font = "arial";
escolhemos a fonte

estilo.color = 0xffffff;
a cor

estilo.size = 10;
o tamanho da fonte

estilo.align = "center";
e o alinhamento

agora vamos fazer a ação que cria e exibe os dias do mes

for (i=1; i<=31; i++) {
primeiro criamos um loop "for" que cria números de 1 em 1 até 31, que é o máximo de dias de um mes. O loop for declara um valor inicial para a variável "i" que no nosso caso é 1 e vai incrementar este valor em 1 até que seja atingido o limite especificado que é 31.

createTextField("diames"+i, i, posx*(i-1), 25, largDia, 18);
dentro da chave de comando deste loop usamos o método "createTextField" para criar TextFields vazios, O primeiro parâmetro entre os parenteses determina o nome dos TextFields, usando a concatenação da string "diames" com o valor da variável "i" que vai sendo incrementada ou seja, para i=1 é criado o TextField "diames1", e assim sucessivamente até 31. O segundo parâmetro determina o "depth" (profundidade) em que será criado o textField, é necessário uma profundidade diferente para cada textField, por isso usamos novamente o valor de "i", porque em um "depth" cabe apenas um objeto. O terceiro parâmetro é a posição "_x" do textField, como precisamos que cada textField seja deslocado à direita em relação ao anterior, para que não se sobreponham, usamos o valor da variável "posx", declarada no início, multiplicada pela variável "i" menos 1, porque declaramos no loop que o valor inicial de "i" fosse 1, mas neste caso precisamos que a primeira posição seja "0"(zero) então i-1=0 e assim conseguimos uma progressão uniforme e com o mesmo incremento à partir de zero. O quarto parâmetro designa a posição "_y" dos textFields, todas iguais a 25. Quinto parâmetro, a largura do textField, aqui lido do valor de uma variável declarada no início para que possamos alterar o seu valor sem sair da bitola especificada para a largura total do nosso calendário. E finalmente o sexto parâmetro que especifica a altura do nosso TextField em 18

with (this["diames"+i]) {
Aqui usamos a ação "with" para designar vários comandos com relação aos textFields determinados dentro dos parenteses. Usamos a palavra-chave "this" e em seguida usamos novamente a concatenação da string "diames" + o valor de "i", assim conseguiremos nos referir a todos os textFields, um de cada vez, cada vez que o loop cria um novo valor para "i". Como veremos mais a frente poderíamos ter usado o comando "eval" para nos referirmos aos mesmos objetos, apenas usando outra maneira de comandar*/

text = i;
determina que o conteúdo de texto dos TextFields será igual ao valor de "i" a cada loop

background = true;
determina que os TextFields terão cor de fundo

backgroundColor = 0x006666;
e determinamos que a cor será 0x006666

setTextFormat(estilo);
Aqui dizemos que os TextFields vão incorporar as propriedades do objeto TextFormat que criamos no começo

}
É fechado o comado "with"

eval("diames"+nd.getDate()).backgroundColor = 0xff0000;}
Neste caso usamos "eval" para concatenar o valor de da string "diames" e os valores conseguidos através dos métodos do objeto Date(), neste caso o método foi o getDate(), que retorna o número do dia do mês, então o TextField ao qual nos referimos é o resultado de "diames" + o dia do mes. Se hoje fosse dia 4, o resultado seria "diames4". A propriedade que especificamos para este TextField é que ele seja de uma cor diferente dos demais, para marcar o dia corrente

Todas as observações do bloco de código acima se aplicam aos 2 blocos abaixo, que criam, posicionam, e dão cor aos TextFields abaixo, menos o que determina o conteúdo de cada textField, neste caso vejamos

//Dias da semana
for (b=1; b<=7; b++) {
createTextField("diasemana"+b, b+50, posx_se*(b-1), 0, largSemana, 18);
with (this["diasemana"+b]) {
text = semanas[b-1];

Aqui determinamos que o conteúdo dos TextFields serão elementos das arrays criadas no início do código, selecionadas a partir do valor da variável "b"-1. Pra quem não está acostumado com arrays o valor é b-1 porque toda array tem seu primeiro valor como 0 (zero), logo, "segunda" seria o valor zero da array, mas declaramos no loop que o valor inicial de "b" é 1, portanto b-1=0 e assim lemos o primeiro valor da array "semanas".

background = true;
backgroundColor = 0x006666;
setTextFormat(estilo);
}
eval("diasemana"+nd.getDay()).backgroundColor = 0xff0000;
}
idem comentários do bloco que cria os dias do mes, a não ser pelo método getDay() do objeto Date(), que retorna o valor dos dias da semana

//meses do ano
for (c=1; c<=12; c++) {
createTextField("mensal"+c, c+100, posx_me*(c-1), 50, largMes, 18);
with (this["mensal"+c]) {
text = meses[c-1];

Neste caso o valor dos TextFields é extraído da array "meses"

background = true;
backgroundColor = 0x006666;
setTextFormat(estilo);
}
eval("mensal"+(nd.getMonth()+1)).backgroundColor = 0xff0000;
}

idem comentários do bloco que cria os dias do mes, a não ser pelo método getMonth() do objeto Date(), que retorna o valor dos meses do ano, com a particularidade de que para o flash, janeiro=0, portanto getMonth()+1, busca o textField correspondente ao mes corrente

Aqui para criar o TextField que exibe o ano corrente temos bem menos trabalho, só precisamos utilizar o método getFullYear() do objeto Date(), que retorna em quatro dígitos o ano corrente, para que seja exibido como conteúdo do TextField

createTextField("ano", 77, 0, -25, largura, 18);
with (ano) {
text = nd.getFullYear();
background = true;
backgroundColor = 0xff0000;
setTextFormat(estilo);
}

Tudo pronto, é só apertar control+enter e ver o resultado.



Devido à reformulação implementada no site, pode ser que você encontre alguns links quebrados. Por favor, ajude-nos a corrigir eventuais problemas nos informando links quebrados
1 comentário


Comentário de Teixeira
| 3/11/2010 - 14:32 |


Boa tarde a todos, Estou ha dias tentando usar _rotation para criar umas setas circulando. Essas sete têm que ficar circulando uma atrás da outra sucessivamente. O caminho da circulação é oval não é bem um circulo mas se tiver um exemplo de um circulo poderia transformar em um caminho oval. Trata-se de uma demonstração como a corrente elétrica circula em um quadro de Circuito Elétrico. Já tentei criar pelo meio mais simples e que sei, ou seja, seta por seta aplicar o "Create Motion Tween" porem as setas não seguem circular em um caminho certo e não ficou bom. Será que tem através actionscript existe essa a possibilidade? Obrigado aquele que puderem me ajudar