junior.c.e 1 Denunciar post Postado Novembro 8, 2013 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
DesenvolvedorRoger 50 Denunciar post Postado Novembro 12, 2013 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
junior.c.e 1 Denunciar post Postado Novembro 13, 2013 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
DesenvolvedorRoger 50 Denunciar post Postado Novembro 14, 2013 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
gugateider 1 Denunciar post Postado Dezembro 17, 2013 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. http://www.greensock.com/loadermax/ Compartilhar este post Link para o post Compartilhar em outros sites