Ir para conteúdo

POWERED BY:

Arquivado

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

SlyX

Load/Unload

Recommended Posts

var conteudo:MovieClip = new MovieClip();
conteudo.x = 15;
conteudo.y = 15;
addChild(conteudo);

var _loader:Loader;
function setupLoader():void {
	_loader = new Loader();
	_loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loadProgress);
	_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
	conteudo.addChild(_loader);
}

function loadProgress(event:ProgressEvent):void {
	var percentLoaded:Number = event.bytesLoaded/event.bytesTotal;
	percentLoaded = Math.round(percentLoaded * 100);
	trace("Loading: "+percentLoaded+"%");
}

function loadComplete(event:Event):void {
	trace("Complete");
}


function novoConteudo(target) {
	//animacao saida
	abrirConteudo(target);
}

function abrirConteudo(file:String):void {
	_loader.load(new URLRequest(file));
}

setupLoader();

abrirConteudo('home.swf');

--------------

 

o que acontece, as coisas do home, continuam carregadas, oq eu queria fazer era algo tipo:

 

function novoConteudo(target) {
	//animacao saida
	conteudo.unloadMovie(); // AS2 bizarro..
	abrirConteudo(target);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma function com um removeChild(conteudo).

 

Um exemplo, apenas para dar uma idéia:

elektraLoader.addEventListener(MouseEvent.CLICK, retiracontent);
function retiracontent(elektraevent:MouseEvent):void{
	removeChild(elektraLoader);
	page1_mc.gotoAndPlay(1);
	page2_mc.gotoAndPlay(1);
        //...etc
}

gotoAndPlay porque o conteúdo dos meus mcs possuem animações.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, cheguei a conclusão que ele esta funcionando, o problema na verdade, são os event listners dentro do swf externo, que quando dou um unload continuam funcionando, como eu poderia remover todos os eventlistners do swf externo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utilize removeListener... quando aplicar o unload

 

remova os Listeners daquele objeto ;)

 

Abraços

 

 

existe alguma forma de remover todos os listners de um swf externo? ou dentro deste swf, eu teria que fazer um vetor com todos os listners para remover?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você teria que usar algum tipo de while relacionado...

 

Mas removeAllListeners disconheço

 

Exemplo encontrado na net... não sei se funciona... mas a ideia é exatamente essa:

var listeners:Dictionary = new Dictionary();

override public function addEventListener( type : String, listener : Function, useCapture : Boolean = false, priority : int = 0, useWeakReference : Boolean = false) : void {

 if( listeners[ type ] ) {

 if( listeners[ type ] [ useCapture ] {

 //snip... etc: check for existence of the listener

 removeEventListener( type, listeners[ type ] [ useCapture ], useCapture );

 listeners[ type ] [ useCapture ] = null;

 //clean up: if no listeners of this type exist, remove the dictionary key for the type, etc...

 }

 }

 listeners[ type ] [ useCapture ] = listener;

 super.addEventListener( type, listener, useCapture, priority, useWeakReference );

};

Outro exemplo você encontra aqui:

http://blog.reyco1.com/method-of-removing-all-event-listeners/

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você teria que usar algum tipo de while relacionado...

 

Mas removeAllListeners disconheço

 

Exemplo encontrado na net... não sei se funciona... mas a ideia é exatamente essa:

var listeners:Dictionary = new Dictionary();

override public function addEventListener( type : String, listener : Function, useCapture : Boolean = false, priority : int = 0, useWeakReference : Boolean = false) : void {

 if( listeners[ type ] ) {

 if( listeners[ type ] [ useCapture ] {

 //snip... etc: check for existence of the listener

 removeEventListener( type, listeners[ type ] [ useCapture ], useCapture );

 listeners[ type ] [ useCapture ] = null;

 //clean up: if no listeners of this type exist, remove the dictionary key for the type, etc...

 }

 }

 listeners[ type ] [ useCapture ] = listener;

 super.addEventListener( type, listener, useCapture, priority, useWeakReference );

};

Outro exemplo você encontra aqui:

http://blog.reyco1.com/method-of-removing-all-event-listeners/

 

Abraços

 

até ai tudo beleza, sera que existe alguma formas de listar todos os listeners ativos?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você entendeu???? alguma coisa do código que você leu?

 

Ele faz exatamente isso ele cria um dicionario com todos os listeners... e ai você pode remover eles.

 

Abraços

 

sim eu entendi que ele substitui a o addlistener pelo novo que no caso entra no dicionario e fica listado, mas eu estava a desenvolver da minha forma para ver ate onde conseguia chegar ai queria saber se era possivel listar os listener ativos como a gente fazia no AS2 para detectar todos os movieclips dentro de um certo local no stage, porque eu queria ter um controle sobre estes listners, porque as vezes quando você da um unload, alguns saem mas quando você da o loaddenovo, ele não reative estes listeners, ai eu estava a usar um listner do added stage, do remove on stage

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hmm você quer algo equivalente ao ChildrenNum só que de listeners...

 

Ai eu acho complicado...

Você pode criar uma classe, que detecte a cada child que é adicionado ao stage, e ai ele alimenta uma array com isso.

 

Para fazer isso você teria que colocar um listener no stage que pegue cada... você pode tentar fazer isso com ADDED_TO_STAGE

Mas não sei se vai funcionar...

 

Eu não tenho muita experiencia ainda com AS 3.0.

 

Mas você deveria dar uma lida em HasEventListener e no ADDED_TO_STAGE

 

Podem vir a solucionar seu problema... ou o quer que você queira fazer hehe

 

Abraços

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.