PEDRO CLAUDIO (50 pts)

STICKMAN (155 pts)

GUILHERME G.G. (137 pts)

RICARDO TEIXEIRA (40 pts)

BÁRBARA TOSTES (64 pts)

GABRIEL SPORCH (53 pts)

SASHA GUDEY (235 pts)

RICARDO TAKAHASHI (180 pts)

DANIELA PIRES (86 pts)

DENIS CARAVALHO (85 pts)

MARLOS ALVES CARMO (90 pts)

RICARDO FIGUEIRA (33 pts)
Treinamento PontoFlash de Flash e ActionScript

Como setar _alpha para um texto criado dinamicamente no FlashMX?

Contagem regressiva de data

Tem como via AS colocar no som um fade-in/fade-out?

Como desenhar círculos e bolas dinamicamente no FlashMX?

Quero fazer alguns layouts diferentes para o mesmo site e cada vez que o usuário entrar veja um deles.

Propriedades e métodos não documentados do FlashMX?

Tenho dúvidas de como fazer um Load Movie.

Eu quero que uma imagem (bitmap) abra uma janela POPUP.

Como criar membros (*propriedades e métodos) PRIVADOS de classes (OOP)?

Como fazer um preloader móvel, que corre atrás do mouse?

Porque o meu AVI no Flash só mostra o primeiro frame?

O que é e para que serve o método getBounds()?

Como fazer a timeline em vez de passar o filme para frente volte o filme?

Quero que uma variável vinda de um TXT vire um link.
Envio de email via formulário utilizando Flash + ASP.

Janelas pop-up e semi-full no flash

Tracejado no Fireworks

Tell Target e Linhas do tempo independentes

Movimentar MC com barra de rolagem e setas

RIA, Macromedia Flex e Laszlo Presentation Server

Scroll dinâmico no Flash 5.

Variáveis no Flash MX

HTML no Flash 5 - A solução para formatação de textos longos.

Action Script 2.0 (Primeira Parte)

Integração Flash X ColdFusion.

Gerando XLS a partir de ASP
Gravar dados

Triangulos2

Calculadora

Arrow

Substituir texto

Busca texto

Senha múltipla

Iluminação com foco

Pond

Pontoflash

Barneys menu

Elástico
HOME | TRUQUES E DICAS
EasyPreloader utilizando os recursos do FLEM.
por Jonas Galvez



Para os que já utilizaram o meu EasyPreloader (sources / preloader) e também para os que nem imaginam o que é isso, segue uma versão atualizada do código que havia criado há algum tempo atrás. Agora ele utiliza os recursos oferecidos pelo FLEM (explicarei o que é isso no final desta mensagem).

include "flem.as"

function Preloader() {
this.mcTotal = this.total = this.bytesLeft = 0;
this.loaded = this.percentage = 0;
this.timeline = new Array();
for(var i = 0; i < arguments.length; i++) {
this.mcTotal += arguments[i].getBytesTotal();
this.timeline[i] = arguments[i];
}
MovieClip.addFLEMListener(this);
}

Preloader.prototype.onEnterFrame = function() {
for(var j = 0; j < this.timeline.length; j++) {
this.total += this.timeline[j].getBytesTotal();
this.loaded += this.timeline[j].getBytesLoaded();
}
if(this.total != this.mcTotal) {
this.bytesLeft = this.total - this.loaded;
this.percentage = Math.round(this.loaded*100/this.total);
this.onPreloadUpdate();
}
if(this.percentage == 100) {
this.onPreloadComplete();
this.mcTotal = this.total = this.bytesLeft = 0;
MovieClip.removeFLEMListener(this);
}
}

Para quem acompanhou o progresso do desenvolvimento deste experimento, as mudanças estão claras. Agora, "this.timeline" será sempre apenas uma array, mesmo que o preloader seja apenas para um movieclip (graças à sugestão do Robert Penner). Isto evita ter que verificar se o tipo de "this.timeline" é um objeto ou não (como eu havia feito anteriormente). A mudança mais interessante foi a definição de alguns event handlers personalizados. Ao invés de definir uma função que deverá ser executada quando o preload acabar, eu criei o event onPreloadUpdate, que é chamado constantemente e o evento onPreloadComplete, que é chamado quando o preload acaba. A utilização destes eventos foi idéia do Branden Hall. Um exemplo de uso deste script segue abaixo.

// chama os arquivos externos
_root.mc1.loadMovie("mc1content.swf");
_root.mc2.loadMovie("mc1content.swf");

// define um novo preloader para os movieclips
var myPreloader = new Preloader(_root.mc1, _root.mc2);

// define a função para exibir os dados do preloader
myPreloader.onPreloadUpdate = function() {
_root.totalDisplay = this.total;
_root.loadedDisplay = this.loaded;
_root.bytesLeftDisplay = this.bytesLeft;
_root.mcBar._xscale = this.percentage;
}

// quando o preload acabar, faça o que deve ser feito
myPreloader.onPreloadComplete = function() {
_root.mc1.gotoAndStop(10);
_root.mc2.gotoAndStop(10);
}

Como sempre, eu não testei, mas tenho 99,9% de certeza que irá funcionar. De qualquer forma, quem encontrar um bug pode me enviar um e-mail e eu darei toda a atenção do mundo, ok? Bem, agora vamos ao FLEM. Estas quatro letrinhas significam Flash Event Model. Como o nome diz, é um Modelo de Eventos para o Flash, mas uma descrição melhor seria Técnica de Execução Dinâmica de Eventos no ActionScript. Deste jeito fica um pouco mais compreensível, mas acho que a melhor maneira de explicar é utilizando um exemplo prático. Se quiséssemos criar um cursor personalizado, normalmente teríamos que adicionar um script em um movieclip, como este que segue abaixo, certo?

onClipEvent(load) {
Mouse.hide();
}
onClipEvent(mouseMove) {
_x = _root._xmouse;
_y = _root._ymouse;
updateAfterEvent();
}

Mas ter que adicionar um script em um movieclip apenas para poder utilizar um evento (no caso, o mouseMove) é um tanto desagradável. Utilizando o FLEM, poderíamos executar um evento destes sem precisar de um movieclip, que tal? É evidente que neste caso do cursor de mouse um movieclip seria preciso, mas não precisaríamos executar o script a partir deste movieclip, e sim, talvez, em um simples frame da linha de tempo principal.

Mouse.hide();
_root.movieclipDoCursor.onMouseMove = function() {
_x = _root._xmouse;
_y = _root._ymouse;
updateAfterEvent();
}
MovieClip.addFLEMListener(_root.movieclipDoCursor);

Bem, acho que agora já deu para compreender. Mas o FLEM não faz isso através de mágica. É preciso ter um símbolo movieclip vinculado na Biblioteca do filme que será utilizado para executar os eventos, mas é melhor apenas um movieclip do que dez. E além disso, o movieclip é inserido no filme dinamicamente (através de attachMovie), o que faz do mal o menor. Quem quiser aprender mais sobre FLEM pode ler um excelente artigo do Robert Penner, que foi publicado no Ultrashock.

http://www.ultrashock.com/tutorials/flash5/flem_intro_tutorial.html

Jonas Galvez

0 comentário