Ir para conteúdo

POWERED BY:

Arquivado

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

Daniel o rei

[Resolvido] erro 2025

Recommended Posts

Eu antes de fazer esse tópico eu procurei e achei um tópico mas eu não consegui resolver o problema.

Tem a função voltar que destroi todos os objetos.

Ele execulta as funções,

destroy_objects();

destroy_boxies();

destroy_circles();

destroykeysanddoors();

destroycarbody();

var cb=carbody.GetUserData();

cb.parent.removeChild(cb);

detonatudo();

 

Só que eu resolvi fazer uma função chamada detonatudo. Essa função faria o mesmo que a função voltar faria. Passei o que tinha na função voltar para função detonatudo só que deu erro:

ArgumentError: Error #2025: O DisplayObject fornecido deve ser filho do responsável pela chamada.

Não intendi, qual a diferença de uma função para outra, é só porque a função detonatudo não é um evento?

Eu queria criar essa função para poder facilitar e toda vez que eu quizer acabar com tudo era só chamar a função detonatudo.

O script"

var cb=carbody.GetUserData();

cb.parent.removeChild(cb);"

Só funciona na função voltar.

Eu não intendi pois tenho vários removeChilds no script e agora deu erro.

Um exemplo de uma função que funciona:

function destroy_circles() {

		for (var i:Number = 0; i <= circlearray.length; i++) {
			removeChild(circlearray[i].GetUserData());
			world.DestroyBody(circlearray[i]);
			if (i==circlearray.length-1) {
				i=circlearray.length;
			}
		}
	}

 

function voltar(e:MouseEvent) {

trace('asdfsdafasf');

var cb=carbody.GetUserData();

cb.parent.removeChild(cb);

detonatudo();

 

}

 

 

public function detonatudo(){

 

destroy_objects();

destroy_boxies();

destroy_circles();

destroykeysanddoors();

destroycarbody();

trace(12121);

trace("trace" + carbody.GetUserData().x);

if(carbody.GetUserData().parent == stage) {

//externo.removeChild(interno);

trace("Removido");

}

Eu não intendi porque os traces da função detonatudo não aparece

 

 

ArgumentError: Error #2025: O DisplayObject fornecido deve ser filho do responsável pela chamada.

at flash.display::DisplayObjectContainer/removeChild()

at jg/destroykeysanddoors()[F:\Box2DFlashAS3 2.1a\Source\jg.as:484]

at jg/detonatudo()[F:\Box2DFlashAS3 2.1a\Source\jg.as:775]

at jg/voltar()[F:\Box2DFlashAS3 2.1a\Source\jg.as:432]

 

 

 

Alguem pode me dar uma luz?

 

Desde já agradeço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver o problema, foi meio que no chute.

Eu antes de pesquisar sobre o problema eu fiz uma função

public function detonatudo(){

		destroy_objects();
		destroy_boxies();
		destroy_circles();
		destroykeysanddoors();
		destroycarbody();//ESSA AQUI
		trace(12121);
		trace("trace" + carbody.GetUserData().x);
		if(carbody.GetUserData().parent == stage) {
           	//externo.removeChild(interno);
           	trace("Removido");
   	}

 

Eu fiz vários testes e no final eu descobri que essa função estava sendo execultada. Então eu comentei ela e coloquei na funçao

detonatudo:carbody.GetUserData().parent.removeChild(carbody.GetUserData());

Eu fiz várias alterações antes de ler este tópico. Ai misturou tudo deu alguns erros. O estranho que debuguei tudo e apontava um removechild na função destroykeysanddoors e o removechild funcionava.

 

ficou assim

 

public function detonatudo(){

		destroy_objects();
		destroy_boxies();
		destroy_circles();
		destroykeysanddoors();
		//destroycarbody();
		trace(12121);
		trace("trace" + carbody.GetUserData().x);


		carbody.GetUserData().parent.removeChild(carbody.GetUserData());

		}


 function voltar(e:MouseEvent) {
		trace('asdfsdafasf');

		//carbody.GetUserData().parent.removeChild(carbody.GetUserData());
		detonatudo()
	}

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.