Outro dia na lista PontoFlash
perguntaram se preloaders como os que ficam mostrando: carregando som
... carregando interface ... carregando animações ...
carregando bitmaps etc, mostram a realidade ou são simulações
apenas.
Respondi rapidamente que isso pode ser real. Uma hipótese
é o autor ter colocado cada um dos itens mostrados em um nível
(_level) e feito o carregamento de cada um deles pelo filme principal
(_level0) ao mesmo tempo que ia mostrando o resultado do carregamento.
Vejam o exemplo abaixo.
Como
vocês devem saber, desde o Flash5 com o advento dos métodos
getBytesTotal() e getBytesLoaded(), você pode setar
um preloader para filmes abertos em load movie into level ou into target,
assim como setar para um movieclip específico em sua timeline.
Criei então um exemplo simples de como você
pode controlar, de um preloader localizado no _level0, o carregamento
e 4 filmes abertos via loadMovie into level em quatro níveis
diferentes.
A interface do filme _level0
Nesse nível
vamos ter apenas um movieclip (preloader) que terá no
seu interior um campo de texto com a variável carregando
associada e um movieclip barra que mostrará o andamento
do carregamento. Esse movieclip barra deve ter seu eixo central
deslocado para a extremidade esquerda do objeto, de modo que o seu crescimento
(_xscale) seja realizado da esquerda para direita.
Os
filmes abertos do outros níveis ficam ao seu critério.
Como disse antes, pode ter sons em um, bitmaps em outro etc. Eu os nomeei
prelader_niveisX.swf, para que possam ser lidos pela concatenação
abaixo mostrada.
Vamos
ao código do movieclip preloader
Nesse movieclip coloquei o único código necessário
para o sistema funcionar.
onClipEvent
(load) {
i = 1;
// declaro a varával i, cujo valor
// vai ser usado na concatenação abaixo
function abrir () {
loadMovieNum ("preloader_niveis"+i+".swf",
i);
carregando = "carregando level"+i;
}
// crio uma função que vai ser chamada
// para abrir os SWFs no níveis
abrir();
// chamo a função para o primeiro filme (i=1)
}
onClipEvent (enterFrame) {
if (i<=4) {
total = this["_level"+i].getBytesTotal();
loaded = this["_level"+i].getBytesLoaded();
pct = (loaded/total)*100;
barra._xscale = int(pct);
}
// todos esses códigos acima vão ser realizados
// enquanto i<=4
if (pct == 100 && i<=3) {
i++;
if (i<=4) {
abrir();
// quando a percentagem de um carregamento
chegar a 100%
// incrementa-se o valor de i e chama-se
novamente a função
// que irá abrir um novo SWF em um
novo _level
}
if (i == 5) {
carregando = "tudo carregado";
break;
// quando o nível 4 estiver totalmente
carregado
// a ação do movieclip é
cancelada
}
}
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