DAAFY (55 pts)

LUIZ AVANCI (51 pts)

RODRIGO AMARAL (56 pts)

EDUARDO PERROUD (52 pts)

DEN IVANOV (260 pts)

RICARDO TEIXEIRA (40 pts)

PANDOGO (82 pts)

ÉMERSON ROCHA (85 pts)

SYDNEY GANHO (60 pts)

ZECA BALA (45 pts)

HELEN TRIOLO (444 pts)

MANGOOST (80 pts)
Treinamento PontoFlash de Flash e ActionScript

Para que serve o evento DATA?

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

Como fazer uma validação para verificar se num campo de entrada foi digitado um número ou não?

Como dar um goto para um quadro de um movieclipe usando uma variável.

Como fazer um botão crescer no rollOver e voltar ao tamanho normal no rollOut?

Qual a vantagem de exportar alguma coisa do Fireworks para o Flash?

Problemas de envio de mensagem pelo Cdonts (ASP).

Como faço, caso o usuário não tenha o plugin do flash5.

Algumas dicas de como usar XML no Flash.

Pra galera que curte Animação Clássica em Flash...

EasyPreloader utilizando os recursos do FLEM.

Como fazer um efeito alpha no Flash5?

É possível referenciar um botão sem ser dentro de um movieclip?

Por problema de cache, nem sempre o Flash5 pega o último arquivo (.xml) gerado.
Sistema de newsletter utilizando Flash + ASP

Betinhocarreiro e Dysney.

Sistema de busca utilizando Flash + ASP.

Aplicação simultânea de Fio e Sombra a bitmaps - Fireworks

Shared object.

Jpeg, Gif, texto, gradientes X slices no Fireworks

Janelas tipo Windows com Swap Depth

Quando usar vetor ou bitmap?

Botão avançar e recuar.

Como arredondar os cantos de uma foto no Fireworks.

Formulário de e-mail com CGI.

Animação no Flash.
Replace

Preload leve

Focus

Menu link

Particles

Drag box

F5 loading scene

Kaleidoscope

Frameload

Worms 3d

Formulário

Rotação
HOME | TUTORIAIS
Alternando janelas no Flash.
por Stickman

Clique nas janelas para mudar sua ordem.

Há algum tempo atrás, alguém perguntou se seria possível ter janelas que "mudassem de camada", como num desktop do Windows (ou MacOS, or qualquer outro... :0)). Dei uma idéia que utiliza Duplicate/Remove Movie Clip, mas na mesma hora fui à luta de fazer um demo.

Mas isso é fácil, né?

Você pode achar que sim, mas na verdade é mais difícil do que parece. Num mundo ideal, você usaria SetProperty para especificar a profundidade do movie clip, mas infelizmente, em nossa existência atribulada e confusa, poucas coisas são tão fáceis como deveriam - você não pode especificar a profundidade de um movie clip depois de criado (isto é, ou outros objetos estão "na frente" ou "por trás" dele).

Ok, espertinho, então nos mostre como se faz...

Embora você não possa modificar a profundidade de um movie clip já criado, você pode alterá-la quando usa Duplicate Movie Clip. Então a idéia é: criar nossas janelas usando Duplicate Movie Clip e, se precisamos trazer para frente uma das de trás, apenas usamos Remove Movie Clip para nos livrar delas e então as refazemos usando Duplicate Movie Clip novamente, numa ordem diferente.

Ã?

Vamos passo a passo.

Primeiro, criamos nossas quatro janelas originais e damos a elas Instance Names (window1 a window4), mas as ocultamos fora da área visível do palco. Agora no primeiro frame de nosso Movie Clip usamos um rápido loop para criar cópias delas em lugar onde possamos vê-las.

Esse código cria quatro novas janelas visíveis (NewWin1 a NewWin4) que as que aparecem na tela. Veja como definimos a profundidade (que é a propriedade que decide a ordem em que os objetos aparecem): NewWin1 tem o maior valor de profundidade, pois isso vai fazer com que ela apareça por cima das outras. Objetos com valores de profundidade maiores aparecem "na frente" de objetos com valores de profundidade menores.

Veja também que estamos criando uma "array", WindowOrder1 a WindowOrder4, e o valor de cada uma é um número representando a ordem das janelas. Isso vai ser usado mais tarde, na hora de recalcular a ordem das janelas.

Código da destruição

O que precisamos saber é fazer com que, quando um usuário clica numa janela, ela é "trazida para a frente" e as outras "levadas para trás", como se pegássemos uma carta do baralho e a colocássemos no topo. Isso requer um código mutreta...

Primeiro, precisamos designar para cada janela um botão invisível. Quando você clica nesse botão ele define uma variável (/:NewTop) para o número de qualquer das janelas que tenha sido clicada. Então ele usa Call ("/control:Redraw") para executar uma série de ações contidas no frame dois de um filme de controle (chamado contrle) na linha de tempo principal.

A primeira série de ações nesse movie clip copia todos os valores do "array" WindowOrder para uma "array" temporário (TempWinOrder) à qual podemos nos remeter mais tarde. Então determinamos que /:WindowOrder1 seja igual a /:NewTop. Teremos então outro loop que passa por cada um dos valores do "array" TempWinOrder (que armazena a "velha" ordem das janelas): ele verifica se cada valor é igual a /:WindowOrder1 (ou seja, se é o mesmo da nova janela principal) e se não for, copia o valor adequado em /:WindowOrder.

Dá pra explicar de novo?

Por exemplo, vamos imaginar que as janelas estejam na ordem 1234 (ou seja, /:WindowOrder1 = 1, /:WindowOrder2 = 2, /:WindowOrder3 = 3, /:WindowOrder4 = 4) e que o usuário clica em /NewWin3. Primeiro, o valor de /:NewTop é modificado para 3. Então copiamos /:WindowOrder para TempWinOrder. /:WindowOrder1 recebe o mesmo valor de /:NewTop (ou seja, 3).

Finalmente fazemos um loop pelos valores de TempWinOrder, verificando se são iguais a /:NewTop (nesse caso, 3):

TempWinOrder1 = 1, então /:WindowOrder2 é definido como 1;
TempWinOrder2 = 2, então /:WindowOrder3 é definido como 2;
TempWinOrder3 = 3, então saltamos para a próxima ação do loop;
TempWinOrder4 = 4, então /:WindowOrder4 é definido como 4.

O resultado é que a ordem das janelas foi trocada de '1234' para '3124'.

Uau!

Agora só resta usar Remove Movie Clip para deletar as velhas janelas e finalmente refazê-las (com Duplicate Movie Clip), usando /:WindowOrder para dizer que janela está em que Profundidade.

Agora parece muito mais complicado do que realmente e (e provavelmente existe uma forma muito mais elegante de chegar ao mesmo resultado, mas tive que fazê-la o mais simples possível para que meu pobre cerebrozinho pudesse lidar com ela!). Dê uma olhada nas ações em /control:Redraw e tudo vai fazer mais sentido.

Cuidado com a armadilha!

Um detalhe que você não pode esquecer é que quando você duplica um movie clip, ele vai 'resetar' para seu primeiro frame. Então, se você precisa conservar qualquer modificação que o usuário tenha feito naquele filme, você precisa armazená-las em variáveis de alguma forma e reaplicá-las quando refizer a janela.

Boa sorte! Stickman

Copyright de todos os arquivos e textos de ©Stickman 1998 - 2000. Sobre copyright, termos de uso e informações, por favor visite www.the-stickman.com/terms.

Baixe aqui o arquivo FLA desse tutorial.



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
0 comentário