DEN IVANOV (260 pts)

MANGOOST (80 pts)

MAURO ROCHA TAVARES (40 pts)

MARCOS JOSÉ PINTO (44 pts)

AMAURY BENTES (123 pts)

NETO LEAL (116 pts)

ZEBEDIAH (35 pts)

MUZAK (45 pts)

SASHA GUDEY (235 pts)

FLASHGURU (155 pts)

FÁBIO DUARTE (79 pts)

DAAFY (55 pts)
Treinamento PontoFlash de Flash e ActionScript

Como alinhar dinamicamente um movieclip no centro do palco, horizontalmente e verticalmente?

Como fazer os botões desse site? http://themmgroup.com

Dá pra abrir uma página com âncora com Get Url?

Função criada para código de contagem regressiva de data, para MX.

Como fazer uma busca de palavras num arquivo do Flash?

Tem como chamar informações de um XML randomicamente no Flash?

Alguém sabe como fazer texto com contorno em outra cor?

Preciso que um campo de texto exiba um arquivo txt e como usar o loadVars?

Como transformar uma animação em um movie clip?

Há a possibilidade de puxar imagens por alguma variável?

Tem como posicionar uma imagem aberta com Load Movie (jpg)?

Como faço para selecionar um determinada letra de uma string?

Como reproduzo aquele efeito de espelho?

Como usar o objeto LoadVars para carregar variáveis de um arquivo externo?
3D Wireframe.

Line Draw.

Criando um objeto para sua paleta personalizada (NINJA)

Logo com aparência 3D - Fireworks

Scroll dinâmico no Flash 5.

Escrevendo e lendo arquivos TXT com o FlashMX.

Criando um verificador de campos de um formulário.

Controlando MovieClip pelas teclas direcionais.

Criando uma nova categoria (paleta) na Barra Insert do seu Dreamweaver.

Degradé com tons metálicos - Fireworks

Load Movie into target (movieclip).

Rayoflight.
Movimento

3d bounce

Menu fmx

XML menu

Trailer

Loja Virtual

Lensflare

Lineas 2

Volume

Page cur

Drag Square

3d frame by frame
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