Jump to content


Photo

Preload Nunca Funfa


  • Faça o login para participar
6 replies to this topic

#1 G3r4ld0

G3r4ld0

    Turista

  • Usuários
  • 33 posts
  • Sexo:Não informado
  • Localidade:Rio de Janeiro - RJ

Posted 22/02/2004, 14:08

Tipo... faz anos que que venho lendo tutos e mais tudos, tentando fazer um preload... E nunca consigo...

Mas agora eu preciso, por que minhas animações taum começando a ficar pesadas.. :(

E tipo, eu não quero pegar ".fla", por que eu não iria aprender, e eu quero entender que diabos eu to fazendo de errado...

Eu sei que tem 3000 tópicos desse tipo, mas não encontrei nenhum que resolvece meu problema...

por isso to colocando aqui um 'fla", com minha "animação" (ainda no início, só para exemplificar mesmo), e o preload... (Até agora o mais lógico e ais bem explicado que encontrei... deixei até os comentários no "código")...

To usando Flash 5, e ficaria mt agradecido se alguém pudesse me informar o que o boçal aqui ta fazendo de errado... :unsure:

Clique aqui para baixar o ".fla" (109kb).

Vlw aew, até ! :D

#2 MFDIS

MFDIS

    www.mateusdamiao.com.br

  • Usuários
  • 66 posts
  • Sexo:Não informado

Posted 22/02/2004, 15:26

Olá, :lol:
Dei uma olhada, o código que você usa é doferente do que eu uso. Notei que você distribuiu em várias camadas, neste que eu utilizo isto não é necessário. O link é esse: Link preloader
Nesse o processo é bem explicado, e vc pode tanto baixar o fla como fazer pelo tutorial.
Espero ter sido de ajuda! ;)

#3 G3r4ld0

G3r4ld0

    Turista

  • Usuários
  • 33 posts
  • Sexo:Não informado
  • Localidade:Rio de Janeiro - RJ

Posted 22/02/2004, 18:22

:rolleyes: vamu lah... vamu devagar....


Eu crio um frame, nele, eu coloco apenas um: "play".

Depois, no segundo, eu coloco:

pct = Math.floor((_root.getBytesLoaded()/_root.getBytesTotal())*100);
if (pct == 100) {
    play();
} else {
    gotoAndPlay(1);
}

Entendi tudo... Coisa bem simples com varriável (me lembra a java script.. :D )...

E então, a partir do 3º frame vai minha animação...

Só que o que ta acontecendo ?

Ele ta voltando para o 1º frame... E assim executando o preload novamente.

o que eu poderia fazer ?

Eu achei que poderia colocar um "gotoAndPlay(3)", no meu último frame, assim ele não repetiria os primeirs frames, que contém preload.

porém, eu to usando apenas um frame para minha animação. (fica tudo em MC, no primeiro frame)... Logo, seria apenas eu adicionar um "stop", o frame de minha animação...

Foi o que eu fiz, mas aih eu reparei que ele não está carregando corretamente...

vi que ele aparece o 1, e não aparece mais nada... Acredito que seja por que ele 'passa direto" no frame, por que não tem nenhum stop...

tentei adicionar um stop, mas também não funcionou...

Então ainda acho que to fazendo algo de errado no preload.


Tipo, essa variável que eu tenho que adicionar no campo de texto, é a "pct", ou eu tenho que criar ?

pelo o que eu entendi do código, é a 'pct" mesmo... :blink:

Então continuo sem conseguir, rs... quanto ao ".fla", não está rodando aqui, deve ser uma versão mais recete do que o meu flash... :(


Ah... mas uma coisa, por que eu tenho que adicionar o "play" no primeiro frame ?? <_<

Tipo, ta aqui o html com o meu preload. (Só que como eu achei que fosse pq minha animação tava muito leve, eu takei uma música de 3 mb... auhuahuhahua)

>> Preload q naum funfa.. :( nem tendo 3 mb de música pra carregar...

Ah, quem tiver paciencia, pode deixar carregar, por que a música que coloquei foi "Papo reto - Charlie Brown jr :D "

FLW!

#4 MFDIS

MFDIS

    www.mateusdamiao.com.br

  • Usuários
  • 66 posts
  • Sexo:Não informado

Posted 22/02/2004, 22:53

Olá, :lol:
Viu kara, pq tu naum copia o conteúdo do MC pra animação em faz em frame normal. Sei que você quer fazer uma coisa por si mesmo, mas não custa simplificar um poco as coisa né. Eu fiz certim com,o tava lá e deu certo, ai eu aprendi mesmo, além de dar certo.
T+ ;)

#5 G3r4ld0

G3r4ld0

    Turista

  • Usuários
  • 33 posts
  • Sexo:Não informado
  • Localidade:Rio de Janeiro - RJ

Posted 23/02/2004, 00:57

<_<

Eu vou ver se o problema é esse, vou fazer um teste como vc falou...

mas é que fica muito desorganizado... :(

De qualquer forma vlw.. :)

fLW ! :D

#6 marcuswd

marcuswd

    Novato no fórum

  • Usuários
  • 17 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte

Posted 25/02/2004, 01: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.

- Preload

ou

Vou demonstrar aqui + ou - como funciona o código...

[code=auto:0]

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.
Marcus Vinicius - Webdesign
Belo Horizonte / MG
www.marcuswd.com - portifólio digital

#7 Sheepman

Sheepman

    Veterano

  • Usuários
  • 1497 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre - RS

Posted 25/02/2004, 15:42

[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.

- Preload

ou

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
Mozart Petter - http://www.mozartpetter.com/
Não sabe o que é herança? clique aqui e descubra.




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq