MonkeyFly 0 Denunciar post Postado Dezembro 29, 2011 Olá pessoal, então tenho o seguinte arquivo que e uma animação contendo alguns menus e que faz a chamada de outras 3 animações externas. Até aeh tudo bem funcionando beleza, mais quando eu uso um pre-loader pra carregar esse arquivo principal ele da o seguinte erro : " TypeError: Error #1009: Não é possível acessar uma propriedade ou um método de uma referência de objeto nula. at Menu_fla::MainTimeline/frame1() " Pela descrição da mensagem o erro acontece ao tentar carregar a cena Menu.swf que e o arquivo principal mais eu já olhei e não consigo encontrar o erro caso alguém já tenha passado por isso e possa me ajudar agradeço desde já. Segue Abaixo o Código do Projeto Principal e do Pre-Loader: Menu.swf // Declarando variaveis de controle de animação para iniciar var portao_in=false; var interfone_in=false; var cerca_in=false; var iluminaçao_in=false; var alarme_in=false; var cameras_in=false; var cftv_in=false; // Declarando variaveis de controle de animação para finalizar var portao_out=false; var interfone_out=false; var cerca_out=false; var iluminaçao_out=false; var alarme_out=false; var cameras_out=false; var cftv_out=false; var conta_luz:int=0; var noite=false; //Declarando variaveis para carregar janelas de popup com informaçoes sobre produtos var container_portao:Container_portao=new Container_portao ; var container_interfone:Container_interfone=new Container_interfone ; var container_cerca:Container_cerca=new Container_cerca ; var container_iluminaçao:Container_iluminaçao=new Container_iluminaçao ; var container_cftv:Container_cftv=new Container_cftv ; var container_cameras:Container_cameras=new Container_cameras ; var container_alarme:Container_alarme=new Container_alarme ; //Declarando ouvintes para iniciar cenas, 1, 2 e 3 btn_cena_1.addEventListener(MouseEvent.CLICK, _clica); btn_cena_2.addEventListener(MouseEvent.CLICK, _clica); btn_cena_3.addEventListener(MouseEvent.CLICK, _clica); //Declarando ouvintes para iniciar janelas de popup btn_portao.addEventListener(MouseEvent.CLICK, _info_in); btn_interfone.addEventListener(MouseEvent.CLICK, _info_in); btn_alarme.addEventListener(MouseEvent.CLICK, _info_in); btn_luz.addEventListener(MouseEvent.CLICK, _info_in); btn_cerca.addEventListener(MouseEvent.CLICK, _info_in); btn_cftv.addEventListener(MouseEvent.CLICK, _info_in); btn_camera.addEventListener(MouseEvent.CLICK, _info_in); //Declarando ouvintes para fechar janelas de popup container_portao.btn_sair_portao.addEventListener(MouseEvent.CLICK, _info_out); container_interfone.btn_sair_interfone.addEventListener(MouseEvent.CLICK, _info_out); container_cerca.btn_sair_cerca.addEventListener(MouseEvent.CLICK, _info_out); container_alarme.btn_sair_alarme.addEventListener(MouseEvent.CLICK, _info_out); container_cameras.btn_sair_cameras.addEventListener(MouseEvent.CLICK, _info_out); container_cftv.btn_sair_cftv.addEventListener(MouseEvent.CLICK, _info_out); container_iluminaçao.btn_sair_luz.addEventListener(MouseEvent.CLICK, _info_out); //Declarando o Stage como ouvinte para iniciar a função que checa as mudanças das variaveis de inicio e fim de animação stage.addEventListener(Event.ENTER_FRAME, _anima); casa_mc.efeito_luz.stop(); casa_mc.lampada_jardim_1.stop(); casa_mc.lampada_jardim_2.stop(); casa_mc.sombra_mc.alpha=0.0; // Iniciando a Função responsavel por carregar as canimaçoes da cena, 1 , 2 e 3 function _clica(e:MouseEvent):void { var carregar_cena:Loader= new Loader(); var arquivo_cena:URLRequest; if (e.target.name=="btn_cena_1") { arquivo_cena=new URLRequest("Inicio Portao.swf"); carregar_cena.load(arquivo_cena); addChild(carregar_cena); } if (e.target.name=="btn_cena_2") { arquivo_cena=new URLRequest("Inicio Interfone.swf"); carregar_cena.load(arquivo_cena); addChild(carregar_cena); } if (e.target.name=="btn_cena_3") { arquivo_cena=new URLRequest("Inicio Cerca.swf"); carregar_cena.load(arquivo_cena); addChild(carregar_cena); } } //Iniciando Função responsavel por carregar as janelas de popups e imagens de produtos function _info_in(e:MouseEvent):void { if (e.target.name=="btn_portao") { container_portao.scaleX=0.1; container_portao.scaleY=0.1; container_portao.x=414; container_portao.y=150; addChild(container_portao); portao_in=true; } if (e.target.name=="btn_interfone") { container_interfone.scaleX=0.1; container_interfone.scaleY=0.1; container_interfone.x=414; container_interfone.y=150; addChild(container_interfone); interfone_in=true; } if (e.target.name=="btn_cerca") { container_cerca.scaleX=0.1; container_cerca.scaleY=0.1; container_cerca.x=414; container_cerca.y=150; addChild(container_cerca); cerca_in=true; } if (e.target.name=="btn_alarme") { container_alarme.scaleX=0.1; container_alarme.scaleY=0.1; container_alarme.x=414; container_alarme.y=150; addChild(container_alarme); alarme_in=true; } if (e.target.name=="btn_luz") { container_iluminaçao.scaleX=0.1; container_iluminaçao.scaleY=0.1; container_iluminaçao.x=414; container_iluminaçao.y=150; addChild(container_iluminaçao); iluminaçao_in=true; } if (e.target.name=="btn_cftv") { container_cftv.scaleX=0.1; container_cftv.scaleY=0.1; container_cftv.x=414; container_cftv.y=150; addChild(container_cftv); cftv_in=true; } if (e.target.name=="btn_camera") { container_cameras.scaleX=0.1; container_cameras.scaleY=0.1; container_cameras.x=414; container_cameras.y=150; addChild(container_cameras); cameras_in=true; } } //Iniciando Função responsavel pela mudança de estado da animação (Fechar janelas de popups) function _info_out(e:MouseEvent):void { if (e.target.name=="btn_sair_portao") { portao_out=true; } if (e.target.name=="btn_sair_interfone") { interfone_out=true; } if (e.target.name=="btn_sair_luz") { iluminaçao_out=true; } if (e.target.name=="btn_sair_cerca") { cerca_out=true; } if (e.target.name=="btn_sair_cameras") { cameras_out=true; } if (e.target.name=="btn_sair_alarme") { alarme_out=true; } if (e.target.name=="btn_sair_cftv") { cftv_out=true; } } //Iniciando Função responsavel por checar estados das variaveis de inicio e fim das animaçoes function _anima(e:Event):void { conta_luz++; if (conta_luz>=150&&noite==false) { casa_mc.sombra_mc.alpha+=0.02; } if (conta_luz>=200&&noite==false) { casa_mc.sombra_mc.alpha=1.0; casa_mc.efeito_luz.gotoAndStop(2); casa_mc.lampada_jardim_1.gotoAndStop(2); casa_mc.lampada_jardim_2.gotoAndStop(2); noite=true; } if (conta_luz>=350&&noite) { casa_mc.sombra_mc.alpha-=0.01; } if (conta_luz>=450) { noite=false; //casa_mc.sombra_mc.alpha=0.0; casa_mc.efeito_luz.gotoAndStop(1); casa_mc.lampada_jardim_1.gotoAndStop(1); casa_mc.lampada_jardim_2.gotoAndStop(1); conta_luz=0; } // Checa se a animação pode ser iniciada if (portao_in) { container_portao.scaleX+=0.1; container_portao.scaleY+=0.1; if (container_portao.scaleX>=1) { portao_in=false; } } if (interfone_in) { container_interfone.scaleX+=0.1; container_interfone.scaleY+=0.1; if (container_interfone.scaleX>=1) { interfone_in=false; } } if (cerca_in) { container_cerca.scaleX+=0.1; container_cerca.scaleY+=0.1; if (container_cerca.scaleX>=1) { cerca_in=false; } } if (alarme_in) { container_alarme.scaleX+=0.1; container_alarme.scaleY+=0.1; if (container_alarme.scaleX>=1) { alarme_in=false; } } if (iluminaçao_in) { container_iluminaçao.scaleX+=0.1; container_iluminaçao.scaleY+=0.1; if (container_iluminaçao.scaleX>=1) { iluminaçao_in=false; } } if (cftv_in) { container_cftv.scaleX+=0.1; container_cftv.scaleY+=0.1; if (container_cftv.scaleX>=1) { cftv_in=false; } } if (cameras_in) { container_cameras.scaleX+=0.1; container_cameras.scaleY+=0.1; if (container_cameras.scaleX>=1) { cameras_in=false; } } // Checa se a animação pode ser finalizada if (portao_out) { container_portao.scaleX-=0.2; container_portao.scaleY-=0.2; if (container_portao.scaleX<=0.1) { portao_out=false; removeChild(container_portao); } } if (interfone_out) { container_interfone.scaleX-=0.2; container_interfone.scaleY-=0.2; if (container_interfone.scaleX<=0.1) { interfone_out=false; removeChild(container_interfone); } } if (cerca_out) { container_cerca.scaleX-=0.2; container_cerca.scaleY-=0.2; if (container_cerca.scaleX<=0.1) { cerca_out=false; removeChild(container_cerca); } } if (alarme_out) { container_alarme.scaleX-=0.2; container_alarme.scaleY-=0.2; if (container_alarme.scaleX<=0.1) { alarme_out=false; removeChild(container_alarme); } } if (iluminaçao_out) { container_iluminaçao.scaleX-=0.2; container_iluminaçao.scaleY-=0.2; if (container_iluminaçao.scaleX<=0.1) { iluminaçao_out=false; removeChild(container_iluminaçao); } } if (cameras_out) { container_cameras.scaleX-=0.2; container_cameras.scaleY-=0.2; if (container_cameras.scaleX<=0.1) { cameras_out=false; removeChild(container_cameras); } } if (cftv_out) { container_cftv.scaleX-=0.2; container_cftv.scaleY-=0.2; if (container_cftv.scaleX<=0.1) { cftv_out=false; removeChild(container_cftv); } } } Pre-loader.swf: //Importando classes para criar o pre-loader import flash.display.Loader; import flash.display.LoaderInfo; import flash.net.URLRequest; import flash.events.Event; import flash.events.ProgressEvent; //Criando variaveis responsaveis pelo load do arquivo var meuLoader:Loader = new Loader(); var minhaUrl:URLRequest=new URLRequest("Menu.swf"); //Var responsavel pelo tamnaho da barra de load var tamanho:Number=0; //Iniciando Items necessarios para a tela do load e declarando o tamanho da barra meuLoader.load(minhaUrl); container_mc.barra_mc.width=tamanho; //Adicionando Eventos aos ouvintes meuLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, _progresso); meuLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, _mostra); //Iniciando Eventos function _progresso(e:ProgressEvent):void { container_mc.text_box.text=""+Math.floor((e.bytesLoaded / e.bytesTotal)*100)+"%"; tamanho=Math.floor((e.bytesLoaded / e.bytesTotal)*400); container_mc.barra_mc.width=tamanho; } function _mostra(e:Event):void { addChild(meuLoader); removeChild(container_mc); } Compartilhar este post Link para o post Compartilhar em outros sites
IAMDIX 10 Denunciar post Postado Dezembro 29, 2011 Não seria melhor criar uma scene so para o preloader no mesmo swf? Compartilhar este post Link para o post Compartilhar em outros sites
MonkeyFly 0 Denunciar post Postado Dezembro 30, 2011 Opá tudo Bom Amigo, obrigado pela sugestão vou tentar fazer isso ! Abraços ! Compartilhar este post Link para o post Compartilhar em outros sites
Elektra 102 Denunciar post Postado Dezembro 31, 2011 Talvez o problema seja com os objetos exportados pela library. Experimente: File > Publish Settings > clique no botão Settings , onde tem altere o 'Export classes in frame: 1" , altere para >> 2. Salve e teste. Isso resolveu para outros colegas aqui do fórum. Aprendi com o Bruno Bispo. Abraços Compartilhar este post Link para o post Compartilhar em outros sites
MonkeyFly 0 Denunciar post Postado Janeiro 2, 2012 Olá, Bom dia pessoal aqui do iMaster e um Feliz Ano Novo ! Então seguindo o conselho do amigo de fazer o pre-loader por scene's não da mais aquele erro, mas porém, o pre-loader na hora de aparecer na tela, demora um pouco aparece geralmente quando esta em 18% do carregamento da barra, coisa de uns 12 - 18 seg oque e muito quando comparado com o pre-loader externo que no caso aparece quase q de imediato pois ele conte apenas 5kb's e não possui nada na Biblioteca para ser carregado. Mas eu gostaria de agradecer a participação e ajuda de todos, muito obrigado !!! Opá, Olha só que sorte, após postar minha ultima mensagem aqui, resolvi dar uma olhada novamente em todo o codigo, e acabei descobrindo o problema do erro. Vou explicar da forma que eu "ACHO" que era o erro. Pois bem meu Pre-loader e um arquivo separado que carrega outro swf, ate aeh tudo bem, só que esse aquivo de pre-loader carrega o novo swf para dentro do seu stage. Aeh que ta a grande sacada no meu Menu.swf eu tinha um Ouvinte que era o Stage.addEventListener... quando o pre-loader carregava o arquivo ele não conseguia encontrar o Ouvinte Stage e por isso dava a mensagem de Objeto Nulo ou Não encontrado, tendo descoberto isso simplesmente mudei o ouvinte para Casa_mc que e um movie clipe que inicia junto com a animação e dispara a minha Função _anima fazendo o mesmo papel do meu Stage. Ate uma próxima vez ! Compartilhar este post Link para o post Compartilhar em outros sites
IAMDIX 10 Denunciar post Postado Janeiro 9, 2012 Ola MonkeyFly, o AS3 do preloader externo fica no mesmo codigo do arquivo principal? Tambem notei esse delay no preloader na "scene" e queria testar do teu jeito. Compartilhar este post Link para o post Compartilhar em outros sites
MonkeyFly 0 Denunciar post Postado Janeiro 9, 2012 Olá, IAMDIX, intao esse arquivo de pre-loder externo e um arqvuio separado outro swf. Eu prefiro usar assim pq um pre-loader a ideia e ser instantaneo, uma vez que um pre loader e uma coisa simples que contenha alih em seu arquivo de 5kb a 30kb no maximo dependendo do pre-loader, estando separado ele carrega mais rapido partindo do principio que o Flash carrega primeiro sua Biblioteca e seu Codigo pra depois carregar suas imagens, em um arquivo muito grande maior ainda sera o delay do pre-lodar e fazendo ele separado não tem esse problema. Compartilhar este post Link para o post Compartilhar em outros sites
IAMDIX 10 Denunciar post Postado Janeiro 9, 2012 Mas como é que ele é chamado ? o AS3 do preloader que voce postou tem que estar aonde? Não estoá claro como funciona pois mesmo que o usuario clica em um botão para chamar a pagina(swf) como é que pode chamar outro swf? (do preloader) Compartilhar este post Link para o post Compartilhar em outros sites
MonkeyFly 0 Denunciar post Postado Janeiro 9, 2012 Repare que aqui nesse trecho do código do pre-loader "var minhaUrl:URLRequest=new URLRequest("Menu.swf");" Estou falando pra ele quem ele vai carregar que no caso seria o Menu.swf mais pode ser qualquer arquivo que você queira que tenha um pre-loader. Aeh quando você for postar seu swf em uma pagina web por exemplo você nao coloca pra carregar o arquivo Menu.swf e sim o pre-loader. Aeh o pre-loader se encarrega de chamar o arquivo que você queira apos carregado. Qualquer outra duvida se quiser Add msn: marcos-eduardo14@hotmail.com Compartilhar este post Link para o post Compartilhar em outros sites
IAMDIX 10 Denunciar post Postado Janeiro 9, 2012 Valeu Marcos, vou tentar aqui quando tiver um tempinho e depois te passo o resultado :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
IAMDIX 10 Denunciar post Postado Janeiro 10, 2012 Mas voces acham mesmo que com um arquivo de 97kb........ no caso meu swf principal vou precisar mesmo do preloader? Testando ctrl+b na dsl (32,6kbs) da 2 segundos testando no servidor wamp pelo wi-fi do notebook (velox de 1 mega dividido entre pc e note)um pouco mais rapido Compartilhar este post Link para o post Compartilhar em outros sites
MonkeyFly 0 Denunciar post Postado Janeiro 10, 2012 Então eu geralmente costumo fazer assim qualquer arquivo acima de 30kbs eu coloco um pre-loader pq quem tiver um net boa nem vai ver então não atrapalha mais se alguém tiver uma net bem ruim e sabemos que muitas pessoas tem, ele vai ajudar. Oque juga e o tamanho do seu pre-loader pra um arquivo desse tamanho faça um pre-loader bem pequeno no max 10kb esse que eu postei tem 10kbs mais ele tem uma foto sem a foto ele fica com 5kb, aparece instantaneamente na tela. Mais também quando você for trabalhar com outros tipos de arquivo você pode caprichar no pre-loader e usar um pouco mais de designe e mais kbs. Depende do uso da sua Animação. Compartilhar este post Link para o post Compartilhar em outros sites
IAMDIX 10 Denunciar post Postado Abril 28, 2012 Voltando ao assunto......... tendo um preloader externo que carrega o principal não seria prejudicial em termo de SEO? Compartilhar este post Link para o post Compartilhar em outros sites