Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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...
>
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");
}
}/*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);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
O greensock tem um pacote de Classes no framework dele chamado LoaderMax.
Usando o LoaderMax você economizará muitas linhas de código e se preocupará apenas em mostrar o que foi carregado.
Dá uma olhada.
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