JOTA LAGO (40 pts)

EDUARDO WALMOTT (226 pts)

STICKMAN (155 pts)

RÔMULO NUNES (32 pts)

AMAURY BENTES (123 pts)

ZECA BALA (45 pts)

MAURO ROCHA TAVARES (40 pts)

MUZAK (45 pts)

DENIS CARAVALHO (85 pts)

IRAPUAN MARTINEZ (45 pts)

NILTON BICALHO (61 pts)

EDUARDO PERROUD (52 pts)
Treinamento PontoFlash de Flash e ActionScript

Como pegar um objeto (movieclip) da biblioteca sem instanciá-lo no palco?

Alguém sabe como funciona os parâmetros do startdrag? StartDrag (beleza1, false, 70, 15, 70, 180);. O que seria estas medidas?

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

Detector de FlashPlayer.

Qual é o comando para quando um HTML abrir redirecione para outro automaticamente?

Como se faz um gradiente com transparência no flash.

Como é que eu faço um efeito de um objeto crescendo e entrando em foco?

Como abrir movieclips em seqüência, um após do fim da animação do outro?

Como dar um fade (alpha) num movieclip clicando num botão?

Quero fazer um loop infinito.

Como fazer uma contagem de dias até uma data específica?

Como funciona a máscara dinâmica do FlashMX?

Como faço para repetir um comando, sem repeti-lo todas vezes?

Alguém sabe como fazer texto com contorno em outra cor?
Como criar objetos 3D no Fireworks.

Preloader com máscara

Detecção do FlashPlayer.

O "X" do MacOS no PhotoShop

Atenuação (easing).

Adicionar ao favoritos

Plugins variados para seu trabalho em design

GuestBook usando integração Flash e PHP.

Exibir páginas em ASP com o componente TexArea do FlashMX2004

Menu deslizante.

Flash MX 2004 - semelhanças com o modelo NET?

Objeto XML - importando para o Flash
X Position

Scroll circular

Rolltext com mask

Chinese dragoon

Timer

Trailer

Abrir popup

Easy preloader

Rotating dna

Rayoflight

Farois

Clip Over e Out
HOME | TUTORIAIS
Eventos no FlashMX
por Jonas Galvez

Foi muito difícil a adaptação dos desenvolvedores em Flash 4 para os novos eventos de movieclip introduzidos no Flash 5, que trouxe um novo meio de programação que pode facilitar muito o desenvolvimento. Para executar um script continuamente no Flash 4, em um loop infinito, é preciso utilizar um movieclip vazio com dois frames, um com o script que será executado e outro com um gotoAndPlay para retornar e executar novamente o script do frame anterior. No Flash 5, isso não é mais necessário com a implementação da declaração onClipEvent. Basta inserir o script dentro de um bloco onClipEvent definido com o evento enterFrame para que o script seja executado continuamente.

   No entanto, após algum tempo, o onClipEvent começou a ser visto como um meio de utilizar eventos não tão prático quanto deveria ser. Para começar, o onClipEvent implica a necessidade de se ter código exclusivamente em movieclips, mesmo quando o código não tiver relação alguma com o movieclip no qual ele estiver. Em outras palavras, às vezes é preciso colocar o código em um movieclip só para possibilitar a execução de scripts que necessitam de alguns eventos. Além disso, é difícil ter um controle sobre a execução dos eventos. Quando é necessário limitar a execução de um evento, o desenvolvedor precisa colocar o código dentro de um bloco de condicional if, e ainda definir uma variável booleana (true ou false) para controlar o evento.

   Mas o principal inconveniente do onClipEvent é que ele não segue muito o conceito de OOP (Object Oriented Programming) se analisarmos profundamente. Este problema também inclui a declaração on, utilizada em eventos de botões. Tendo em vista a necessidade de se ter código em objetos individuais, nunca poderemos ter um único código que controle todo o filme, tornando o desenvolvimento mais difícil. Esta dificuldade resulta da necessidade de ter que editar vários objetos e frames que contém scripts.

   Não que o código deva obrigatoriamente ser colocado em um único local, mas recomenda-se o máximo nível de organização e centralização possível, seguindo um modelo orientado à objeto como o do Java por exemplo. Mas imagine que você tem vários movieclips com códigos diferentes, e todos precisam ser alterados. Neste caso, você teria acessar todos os movieclips para editar os scripts, o que daria um grande trabalho. Agora imagine se você tivesse um único código definido em único frame da linha de tempo principal, seria muito mais fácil editá-lo e organizá-lo.

   Mas como utilizar os eventos de movieclips sem precisar colocar código dentro de um movieclip? Alguns programadores já se perguntaram isso, e começaram a desenvolver as famosas event engines. Uma event engine permite definir e utilizar eventos fora de movieclips, de uma forma bastante inteligente e orientada à objeto. Basicamente, uma event engine trabalha da seguinte forma: uma função é criada e depois definimos um evento que deverá acontecer para que a função seja executada. Dentre as principais event engines criadas, destacam-se o ACK (ActionScript Component Kit) e o FLEM (Flash Event Model), ambas criadas pelo mesmo programador: Branden Hall. Um exemplo simples de código utilizando o ACK segue abaixo.

var engine = new Object.ACK.eventEngine();
function funcao() { trace("Alguma coisa."); };
engine.addEventListener("mouseMove", this, "funcao");

   No script acima, utilizo o método addEventListener do objeto eventEngine criado para determinar que a função com o nome "funcao" deverá ser executada quando o evento mouseMove acontecer. Pode parecer simples, mas o processo por trás disso é um tanto complicado, e muitos usuários tiveram dificuldades em se adaptar à maneira como o ACK trabalha. Por essa e outras razões, Branden Hall criou o FLEM, que trabalha de uma forma muito mais inteligente mantendo a conformidade com o padrão OOP. Uma adaptação FLEM do código ACK acima seria feita da seguinte forma.

this.onMouseMove = function() { trace("Alguma coisa."); };
Mouse.addFLEMListener(this);

   Primeiro definimos a função como sendo um método da timeline representada pela palavra-chave this, e depois adicionamos um "listener" do objeto Mouse para a timeline. O objeto Mouse tem quatro eventos: onMouseMove, onMouseUp e onMouseDown. Ao definir um listener do objeto Mouse para a timeline, as funções que tiverem um dos nomes dos eventos comentados serão executadas quando o evento relacionado acontecer. Na verade, o conceito é bem mais complexo, mas esta é a forma mais simples de explicar que encontrei.

   Você deve estar se perguntando porque estou falando de event engines, ACK e FLEM quando o assunto deste artigo são os eventos no FLASH MX. A resposta é muito simples: o modelo de eventos do FLEM foi implementado Flash MX, com algumas alterações óbvias. Para começar, os eventos de movieclip agora podem ser definidos dinamicamente, e são executados sem a necessidade de definir listeners específicos. Segue abaixo a relação dos eventos que podem ser utilizados em movieclips agora.

onLoad, onUnload
onMouseMove, onMouseDown, onMouseUp
onPress, onRelease, onReleaseOutside
onDragOut, onDragOver
onRollOut, onRollOver
onKeyDown, onKeyUp
onSetFocus, onKillFocus
onEnterFrame
onData

   A primeira coisa que se nota é que agora os movieclips também tem os mesmos eventos de botões. Isto facilita bastante quando existe a necessidade de fazer um movieclip trabalhar como um botões. Para tornar um movieclip clicável, não é mais preciso utilizar o hitTest, sendo que agora é possível usar os eventos onPress e onRelease. No Flash MX, os botões têm nomes de instância, as mesmas propriedades dos movieclips e também podem ter eventos definidos dinamicamente. Segue abaixo a relação completa dos eventos.

onPress, onRelease, onReleaseOutside
onDragOut, onDragOver
onRollOut, onRollOver
onSetFocus, onKillFocus

   Ainda é possível utilizar as declarações on e onClipEvent, mas o uso dos novos eventos se torna muito mais atraente, considerando as vantagens que já comentei anteriormente. Para definir um event handler (uma função que deverá ser executada quando um evento acontecer) de um movieclip, basta atribuir uma função à um dos eventos disponíveis, como no exemplo abaixo.

nome_do_movieclip.onMouseUp = function() {
    trace("Mensagem: o mouse foi clicado!");
};

Isso seria o mesmo que definir um onClipEvent(mouseUp) para o movieclip, com a vantagem que o código pode ficar em qualquer lugar, facilitando a edição e manutenção do script. O mesmo processo se aplica aos botões, veja o exemplo abaixo.

nome_do_botao.onRelease = function() {
    trace("Mensagem: o botão foi clicado!");
};

   Ainda existe muita coisa relacionada à eventos no Flash MX, mas creio que o objetivo deste artigo já foi alcançado. Para que você possa ter um melhor aproveitamente, agora irei guiá-lo em um rápido tutorial para criação de um cursor personalizado utilizando o novo modelo de eventos do Flash MX.

1. Crie um novo filme no Flash MX com o layout e dimensões que você desejar. Depois, desenhe uma forma que você quer que seja o cursor personalizado, e transforme-o em um movieclip com o nome de instância seta.

2. Clique com o botão direito do mouse o primeiro e único frame do filme e selecione Actions. No painel Actions, insira o script abaixo.

_root.seta.onMouseMove = function() {
     this._x = _root._xmouse;
     this._y = _root._ymouse;
     updateAfterEvent();
 };
 Mouse.hide();

   Para acessar propriedades do movieclip a partir de uma função como esta, é necessário o uso da palavra-chave this, que mesmo embora nào é necessária na declaração onClipEvent, caracteriza uma boa prática de programação.

  Neste artigo você aprendeu sobre os problemas e vantagens dos modelos de eventos empregados no Flash 5 e no Flash MX, e também viu como criar um cursor personalizado utilizando o modelo de eventos do Flash MX. Em breve irei publicar um artigo mais profundo sobre o assunto, ensinando a trabalhar com listeners em objetos e classes. Clique aqui para baixar o arquivo fonte do exemplo utilizado neste artigo.



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