RICARDO TAKAHASHI (180 pts)

PANDOGO (82 pts)

JONAS GALVEZ (521 pts)

RODRIGO AMARAL (56 pts)

JOTA LAGO (40 pts)

DEN IVANOV (260 pts)

MANGOOST (80 pts)

RÔMULO NUNES (32 pts)

SÁVIO PONTE (39 pts)

JOÃO NETO (78 pts)

IRAPUAN MARTINEZ (45 pts)

GUILHERME G.G. (137 pts)
Treinamento PontoFlash de Flash e ActionScript

Campos dinâmicos não aceita máscaras?

Como mudar a cor de um objeto via Actionscript?

Quero mudar uma ação de acordo com a hora do dia.

Flash 5 ou Flash 4?

Como verificar a resolução do usuário e abrir um filme compatível?

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

Tô tentado abrir uma janela popup com um comando dentro de um arquivo de texto chamado via loadVariables.

Como armazenar dados em uma base de dados para só depois serem importadas para o Access?

Como simular, com sharedObjects, um cookie e guardar o frame no qual o usuário estava quando saiu do filme?

Como fazer uma arma móvel atirar um projétil verticalmente?

Como fazer para que a cada "refresh" da página, apareça um banner diferente?

Como controlar play e stop de um movimento feito em Actionscript por um botão?

Consegui usar o XML com ASP, mas ainda não consegui colocar no flash.

Por que o "&" retorna erro num texto importado no flash?
Exibir páginas em html com o componente TextArea do FlashMX2004

Componentes no Flash MX 2004

3D Wireframe - segunda parte

Texto difuso

Compartilhando fontes

Motion Blur.

Programando objetos 3D em Plataformas 2D como a do Flash

Desenhando no Flash.

Tweening shape (interpolação de forma)

CD Record (um player com clips arrastáveis).

Preloader com máscara

Duplo clique.
Liga e desliga MX

Barra de som

Type 2

Rotacao de banner

Tangran

Cubos vivos

Menu deslizante 2

Photofade

Wormspyder

Filtro de cores

Senha múltipla

Message Board Flash+ASP
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