Ir para conteúdo

Arquivado

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

junior.c.e

as3 função

Recommended Posts

Fala galera do IMASTER,

 

Estou tendo um problema com uma função que criei e ainda não consegui resolver, se alguém souber a solução e puder me ajudar fico muito grato.

Vamos ao problema.

Criei uma função apenas para carregar arquivos externos para animação (.swf , PNG, JPG). Para utilizar esta função deve-se passar os seguintes parâmetros.

1º Quem vai receber o arquivo carregado.

2º Para onde ele deve ser carregado

3º A URL ou endereço do arquivo a ser carregado

 

 

Meu Script

 

//Variaveis 
var v_destino:MovieClip = new mc_puxa();
var mcExt:MovieClip;


//Ações
v_destino.x = 125;
v_destino.y = 125;
addChild(v_destino);

//FUNÇÃO LOADER RESPOSAVEL POR CARREGAR OS ARQUIVOS E TRANSFERIR PARA SEU HOSPEDEIRO

function F_carrega(P_hospedeiro:MovieClip,P_endereco:MovieClip, P_URLexterno:String):void
{
	var ldr:Loader = new Loader();
	ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, F_transfere);
	ldr.load(new URLRequest(P_URLexterno));
	//TRANSFERE O ARQUIVO CARREGADO NA VARIAVEL ldr PARA SEU HOSPEDEIRO
	function F_transfere(e:Event):void
	{
		P_hospedeiro = MovieClip(ldr.contentLoaderInfo.content);
		ldr.contentLoaderInfo.removeEventListener(Event.COMPLETE, F_transfere);
		ldr.unload();
		P_hospedeiro.x = -105;
		P_hospedeiro.y = -90;
		P_endereco.addChild(P_hospedeiro);
	}
}

// 1º TESTE SE A FUNÇÃO ESTA CAREGANDO O ARQUIVO SOLICITADO
btn3.addEventListener(MouseEvent.CLICK, function(evt:MouseEvent){F_carrega(null,v_destino,"mc1.swf")});

// 2º TESTA SE É POSSIVEL ACESSAR UM ELEMENTO QUE ESTEJA DENTRO O MC QUE FOI CARREGADO
btn2.addEventListener(MouseEvent.CLICK, function(evt:MouseEvent){(mcExt.teste.text = ("CORRETO"))});

O problema é que quando tempo acessar um botão ou outro elemento no mc carregado esta perdendo o caminho, dando a seguinte mensagem.

 

TypeError: Error #1009: Não é possível acessar uma propriedade ou um método de uma referência de objeto nula.
at MethodInfo-223()
Quando removi o parâmetro P_hospedeiro e coloquei direto a variavel funcionou corretamente porem não consigo reaproveitar a função.
Bom se auguem puder me ajudar fico muito grato...

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Copie seu código, teste aqui e correu tudo bem...

 

Provavelmente o erro deve estar no arquivo externo ou nesse cara aqui mc_puxa()

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Copie seu código, teste aqui e correu tudo bem...

 

Provavelmente o erro deve estar no arquivo externo ou nesse cara aqui mc_puxa()

 

[]'s

 

Olá Roger beleza?

 

Obrigado por tentar me ajudar.

 

A função realmente esta funcionando corretamente, porem depois que carrego o arquivo externo não consigo acessar o mesmo. Abaixo esta meu código bem detalhado, veja que na função onde testo o acesso diz que um termo é indefinido, é como se ao acaba a função perdesse a referencia a variável que recebeu o objeto externo.

 


//VARIAVEIS
//-----------------------------------------------------------------------------------------------------------------------------

//Recebe da variavel v_loader o extCabecario.swf
var v_recebCabecarioExt:MovieClip = new MovieClip();
//Recebe da variavel v_loader o extConteudo.swf
var v_recebConteudoExt:MovieClip = new MovieClip();

//Cria o botão que carrega o cabeçario
var v_btn:MovieClip = new mc_btn  ;
v_btn.x = 172;
v_btn.y = 832;
v_btn.btnNome.text = ("CARREGA CONTEUDO");
addChild(v_btn);

//Cria o botão que carrega o cabeçario
var v_btn2:MovieClip = new mc_btn  ;
v_btn2.x = 502;
v_btn2.y = 832;
v_btn2.btnNome.text = ("CARREGA CABECARIO");
addChild(v_btn2);

//Cria o botão que carrega o cabeçario
var v_btn3:MovieClip = new mc_btn  ;
v_btn3.x = 832;
v_btn3.y = 832;
v_btn3.btnNome.text = ("TESTA O ACESSO");
addChild(v_btn3);

// Sera o destino extCabecario.swf
//mc_vazio é um movieclip na biblioteca
var v_cabecario:MovieClip = new mc_vazio();
v_cabecario.x = 0;
v_cabecario.y = 0;
addChild(v_cabecario);

//Sera o destino do extConteudo.swf
//mc_vazio é um movieclip na biblioteca
var v_conteudo:MovieClip = new mc_vazio();
v_conteudo.x = stage.stageWidth / 2;
v_conteudo.y = stage.stageHeight / 2;
addChild(v_conteudo);


// FUNCOES 
//---------------------------------------------------------------------------------------------------------------------------

/*Função responsavel por carregar qualquer objeto externo
Parametros nevessários (1º Variavel que recebe o arquivo, 2º posiçãoX, 3º posiçãoY, 4º Destino addChild, 5º URL arquivo externo*/

function F_carrega(p_recebe:MovieClip,p_posX:int,p_posY:int,p_destino:MovieClip,p_urlExterna:String):void
{
	var v_loader:Loader = new Loader();
	v_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, F_transfere);
	v_loader.load(new URLRequest(p_urlExterna));

	function F_transfere(e:Event):void
	{
		p_recebe = MovieClip(v_loader.contentLoaderInfo.content);
		v_loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, F_transfere);
		v_loader.unload();
		p_recebe.x = p_posX;
		p_recebe.y = p_posY;
		p_destino.addChild(p_recebe);
		trace(p_urlExterna +" foi carregado");
	}
}
//Esta função é apenas para testar se extCabecario.swf esta sendo acessado.

/*Quando chamo esta função esta dando o seguinte erro 
TypeError: Error #1010: Um termo é indefinido e não tem propriedades.at index_fla::MainTimeline/F_testeAcesso()*/

function F_testeAcesso(e:MouseEvent):void
{
	v_cabecario.v_recebCabecarioExt.texto.text = ("Acesso correto");
}

// EVENTOS;
//---------------------------------------------------------------------------------------------------------------------------

v_btn2.addEventListener(MouseEvent.CLICK, function(MouseEvent){F_carrega(v_recebCabecarioExt,0,90,v_cabecario,"extCabecario.swf")});
v_btn.addEventListener(MouseEvent.CLICK, function(MouseEvent){F_carrega(v_recebConteudoExt,-130,0,v_conteudo,"extConteudo.swf")});
v_btn3.addEventListener(MouseEvent.CLICK, F_testeAcesso);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não testei o seu código, mas lendo ele por alto, observei que falta um objeto(ou propriedade) chamado 'texto' nele.

 

Neste local ~> v_cabecario.v_recebCabecarioExt.texto

 

[]'s

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.