[quote name='marcuswd' date='25 Feb 2004, 02:20 '] E um conjunto de códigos muito simples, preparei um clipe de filme onde está demonstrado um preload, que funciona.Na propia página você vai achar um link para você pegar o arquivo *.fla.
-
Preloadou
Vou demonstrar aqui + ou - como funciona o código...
if (_framesloaded == _totalframes) {
gotoAndStop("Site", 1);
} else {
gotoAndPlay(1);
}
sendo que if significa 'se', então, traduzindo ficaria... - Se os quadros carregados forem iguais ao total de quadros do filme se aplicada uma ação que levara a outra cena, chamada 'site', no quadro 1, onde você deve colocar sua animação ou o site-. - E 'else' significa 'se não'... Então, caso os quadros carregados não corresponderem ao total de quadros de filmes não sera aplicada a ação anteriormente citada.
Sendo que se você adicionar uma animação no quadro, tipo um carregando piscando em 3 quadros no filme, devera ser colocada essa ação no 3° quadro. -
Está um pouco confusso né, mais tomara que vc entenda.
E como eu não sou nenhum guru de progamação, muito pelo contrario, so sei o básico, e estiver errado, por favor me corijam. [/quote]
Sim, está tudo certinho, mas não recomendo utilizar o ifFramesIsLoaded é uma ação depreciada. Seguinte, para todos os perdidos e os meio perdidos vou tentar clarear suas idéias! :)
Vocês querem que o Flash carregue o conteúdo de seu filme, mas mostre um Status para o usuário do andamento da coisa certo? Pra isso serve um preloader!
Pra vocês entenderem o que eu quero dizer, o Flash carrega tudo, inclusive o seu preloader, portanto o seu preloader nunca pode estar na mesma frame do que o seu conteúdo! Porque? Simples, o Flash vai carregar tudo o que estiver na frame 1 e só depois apresentará o conteúdo. Portanto lá vai uma regrinha:
1ª - Nunca deixe o seu preloader junto do conteúdo do site.
Você pode colocar o preloader uma frame antes, ou em uma cena antes do conteúdo, isso vai da sua preferência, eu particularmente prefiro usar 1 cena pra tudo, portanto procuro colocar sempre o preloader 1 frame antes do conteúdo.
Ok, fora a teoria, vamos para a prática:
Não vou explicar todo o blablabla de criar barrinhas, vocês já devem estar fartos disso e tá cheio de tuto explicando essa parte, vou apenas mostrar o código!
Recomendo ao amigo criador do tópico que atualize o seu Flash assim que possível, pois com o Flash 5 realmente dificulta algumas coisas.
Falando do código. Então temos uma frame reservada para o nosso preloader (antes do conteúdo por favor) onde nós colocaremos as ações e a barra e os campos de texto que mostram a porcentagem. As ações devem ser colocadas em uma frame vazia, em uma camada acima da barra e dos textos ok?
Digamos que nossa barra tem instância "barra" e o nosso campo de texto tem var igual a "pct". (fiz com var por causa do Flash 5, mas você pode colocar como instância também, a única alteração no código será colocar um .text após o nome de instância, no caso "pct". Ex.: pct.text).
Criando o código:
[code]stop();//para o filme
barra._xscale = 0;//define o tamanho da barra 0.
barra.onEnterFrame = function() {
barra._xscale = (_root.getBytesLoaded()/_root.getBytesTotal())*100;
pct = (Math.round((_root.getBytesLoaded()/_root.getBytesTotal())*100));
if (Math.floor(_root.getBytesLoaded()) == Math.round(_root.getBytesTotal())) {
delete this.onEnterFrame;
play();
}
};
Explicando. Na linha 1 temos um stop() que para o filme, na linha 2 definimos o valor de escala (tamanho) da barra como 0, na linha 3 declaramos a função onEnterFrame que executa a função a cada frame, como se você colocasse os comandos repetidas vezes em cada frame e rodasse o filme, ele é executado conforme a taxa de frames do seu filme. Na linha 4 definimos o tamanho da barra conforme anda o carregamento, o _root.getBytesLoaded() pega os valores carregados do filme, lembrando que _root é o filme principal, e _root.getBytesTotal() pega o tamanho total do filme, aí entra um cálculo matemático: (Carregado dividido por Total) multiplicado por 100. Carregado e Total ficam entre parênteses pois isso faz com que o Flash resolva primeiro a divisão e desse resultado multiplique por 100.
A linha 5 é praticamente a mesma coisa exceto porque lá temos um novo parceiro, Math.round faz com que o valor fique redondo tanto para cima como para baixo. Ex.: 5,5 vai ser 6. 7,4 vai ser 7 e assim por diante, isso porque se não colocarmos o Math.round quando formos exibir o valor de % em um campo de texto ele iria ficar assim: 99,000145454 % (é + ou - isso, hehe), enfim, não ficaria exato e ficaria longo demais.
Na linha 6 temos uma condição. Antes explicarei o Math.floor, ele é semelhante ao Math.round, mas esse arredonda somente para baixo os valores.
Então a condição seria, "Se o valor de Bytes carregados for igual mesmo aos valores de Bytes totais, execute".
Na linha 7 se a condição for verdadeira ele deletará o onEnterFrame para que pare de executar a condição a cada taxa de frame.
Na linha 8 ele dá o play() no filme e apresenta o conteúdo na frame seguinte.
É importante que você coloque um stop() na última frame do filme pois caso o contrário ele vai rodar o preloader novamente.
Acho que é isso, espero que tenham entendido e qualquer dúvida é só postar!
At's