Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Muricium

[Resolvido] ele não para de rodar

Recommended Posts

Ola pessoal desenvolvi uma animação todo na Time line, sem usar o Action, e no ultimo frame coloquei o stop (); para ele nao ficar dando loop. Mas coloquei um preload para ele carregar antes e depois que coloquei este preload ele fica dando loop, como ignorasse o stop (); que coloquei no ultimo frame.

 

Onde estou errando?

 

barra_mc = a abarra de porcentagem

e porcentagem é o numero que esta carregando

 

 

segue o código do preload:

_root.onEnterFrame = function() {
	var carregados:Number = _root.getBytesLoaded();
	var totais:Number = _root.getBytesTotal();
	var calculo:Number=(carregados/totais)*100;
//
if(calculo==100) {
	play();
}else{
	stop();
}

barra_mc._width=calculo;
porcentagem=int(calculo) + "%";


};

Compartilhar este post


Link para o post
Compartilhar em outros sites

por causa do onEnterFrame.

 

na condição que verifica que foi carregado tenta algo assim

 

delete this.onEnterFrame;

Compartilhar este post


Link para o post
Compartilhar em outros sites

No ultimo frame você colocou stop();??

 

Pois o código ta certo

Mas eu removeria o else que é desnecessário

 

E colocava no começo do código antes do enterframe

 

E como o amigo disse removeria o enterframe como delete

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

_root.onEnterFrame = function() {

var carregados:Number = _root.getBytesLoaded();

var totais:Number = _root.getBytesTotal();

var calculo:Number=(carregados/totais)*100;

//

if(calculo==100) {

play();

delete this.onEnterFrame;

}else{

stop();

}

 

barra_mc._width=calculo;

porcentagem=int(calculo) + "%";

 

 

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao, eu fiz isso daí, mas não funcionou nao. ele continua voltando.

_root.onEnterFrame = function() {
	var carregados:Number = _root.getBytesLoaded();
	var totais:Number = _root.getBytesTotal();
	var calculo:Number=(carregados/totais)*100;
//
if(calculo==100) {
	play();
	delete this.onEnterFrame;
}else{
	stop();
}

barra_mc._width=calculo;
porcentagem=int(calculo) + "%";




};

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hmm eu to sem flash aqui para testar, mas tenho um preload padrão que uso bem isso que te falei.

 

ao invez de this tente _root

 

Chegando em casa eu vejo certinho e te respondo caso ninguem te ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou repetir ;)

 

Esse else não existe.......

 

Pois ele vai toda vez re fazer o calculo e toda vez o calculo vai dar 100 então vai entrar no if novalmente

 

Depois que você usar o delete this.onEnterFrame

 

 

Coloque um stop(); no ultimo frame da sua animação ou na animação propriamente dita onde você quer que pare...

 

Que ele vai parar.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

MARAVILHA MEU QUERIDO

 

funcionou, obrigado pela atenção

 

entao para aprendizado

 

colocando o else { stop ();} ele voltaria e entraria em loop o que poderiamos dizer de um loop infinito?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele já era um loop infinito... uma vez que ele nunca entraria no else

 

Pois ele sempre verificaria a variavel calculo ia sempre dizer 100

Então ele sempre entraria no if...

 

Você teria que nesse caso criar outro tipo de condição para que ele não entra-se mais no if ;)

 

Ou para ele não entrar no on enterfarme na verdade :)

fazendo assim:

var verifica:Number;

if(verifica == undefined){
_root.onEnterFrame = function() {
	var carregados:Number = _root.getBytesLoaded();
	var totais:Number = _root.getBytesTotal();
	var calculo=(carregados/totais)*100;
//
if(calculo==100) {
	verifica = 1;
	play();
	delete this.onEnterFrame;
}
barra_mc._width=calculo;
porcentagem=int(calculo) + "%";
};
}else{
stop();
}

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verdade, nem tinha reparado no else.

 

Normalmente dou stop fora do enterframe e depois que carrega doi play e deleto ele. Mais ou menos assim

preload = function(alvo):Void {
	alvo.stop();
	var total:Number = alvo.getBytesTotal();
	var porcentagem:Number;
	//trace("total: "+total);
	alvo.onEnterFrame = function() {
		var lendo:Number = this.getBytesLoaded();
		porcentagem = Math.floor((lendo/total) * 100);
						
		this.text.text = porcentagem + " %";
		
		if(lendo>4 && total>4 && lendo>=total) {
						this.play();
			delete this.onEnterFrame;
	
		}
		
	}
}
preload(_root);

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.