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, to tentando construir um site todo em Flash AS3. Como é minha primeira tentativa
to com dificuldades de importar um SWF externo com PreLoader.
O que pretendo que faça é o seguinte, quando a pessoa clica pra ver meu portfolio o botão
btn1 tem uma function pra ir para a label "portfolio". Quando abrir portfolio começar a
carregar com barra de Loading os swf externo que seria como por exemplo
"trabalho1.swf", "trabalho2.sfw", "trabalho3.swf", etc.
Para isso eu tenho que colocar a barra de loading no SWF externo exemplo "trabalho1.swf"
ou eu coloco a action no arquivo principal?
Um exemplo legal que achei que é idêntico ao que eu queria é o loaderMax da GreenSock que
além de carregar o SWF principal ele carrega os SWF externo.
http://www.greensock.com/loadermax/
Espero que não tenha ficado complexo de entender minha dúvida.
Desde já, obrigado. ;)
Olá berseck, to tentando entender a action aqui mais está dando um erro nada a ver nessa linha:
var loader.load(new URLRequest("exemplo.swf"));
olha o erro:
1086: Syntax error: expecting semicolon before dot.
Esperando ; antes do ponto, mas que ponto? oÔ
Opa
Eu meti um var ali na frente... remove ele que ta errado
certo é assim:
loader.load(new URLRequest("exemplo.swf"));
My bad!
Abraços
Berseck surgiu mais uma dúvida, meu action está assim:
var loader:Loader = new Loader();
loader.load(new URLRequest("arquivoExterno.swf"));
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loadProgress);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
function loadProgress(e:ProgressEvent):void{
addEventListener(Event.ENTER_FRAME, preLoad);
function preLoad(e:Event):void{
var bytestoLoade:Number = loaderInfo.bytesTotal;
var numberLoaded:Number = loaderInfo.bytesLoaded;
if (bytestoLoade == numberLoaded){
removeEventListener(Event.ENTER_FRAME, preLoad);
gotoAndPlay(2);
}else {
preLoader.preLoaderFill.scaleX = numberLoader/bytestoLoade;
preLoader.bytesPercent.text = Math.floor(numberLoader/bytestoLoade*100) + "%";
}
}
function loadComplete(e:Event):void{
addChild(loader);
}
A questão agora é na parte gotoAndPlay(2); eu não quero que ele vá para o frame 2 e sim para o arquivo externo.
Qual action eu teria que usar?
Desde já, obrigado.
Remove o gotoAndPlay
e deixa ele fazer o addChild dele quando da o onComplete
Abraços
Berseck a barra não ta crescendo como se tivesse carregando, os números de porcentagem não aparecem e quando termina de carregar, a barra ainda continua estática na tela. Sabe o que pode ser? :o
O as ta assim:
var loader:Loader = new Loader();
loader.load(new URLRequest("arquivoExterno.swf"));
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loadProgress);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
function loadProgress(e:ProgressEvent):void {
addEventListener(Event.ENTER_FRAME, preLoad);
function preLoad(e:Event):void {
var bytestoLoad:Number= loaderInfo.bytesTotal;
var numberLoaded:Number = loaderInfo.bytesLoaded;
if (bytestoLoad == numberLoaded) {
removeEventListener(Event.ENTER_FRAME, preLoad);
} else {
preLoader.preLoaderFill.scaleX = numberLoaded/bytestoLoad;
preLoader.bytesPercent.text = Math.floor(numberLoaded/bytestoLoad*100) + "%";
}
}
}
function loadComplete(e:Event):void {
addChild(loader);
}Que isso aqui???
addEventListener(Event.ENTER_FRAME, preLoad);
function preLoad(e:Event):void {
var bytestoLoad:Number= loaderInfo.bytesTotal;
var numberLoaded:Number = loaderInfo.bytesLoaded;
if (bytestoLoad == numberLoaded) {
removeEventListener(Event.ENTER_FRAME, preLoad);
} else {
preLoader.preLoaderFill.scaleX = numberLoaded/bytestoLoad;
preLoader.bytesPercent.text = Math.floor(numberLoaded/bytestoLoad*100) + "%";
}
}
???
O correto é assim:
var loader:Loader = new Loader();
var campo:TextField = new TextField(); // Apenas para o exemplo
addChild(campo); //Apenas para o exemplo
campo.x = stage.stageWidth/2; //Apenas para o exemplo
campo.y = stage.stageHeight/2; //Apenas para o exemplo
loader.load(new URLRequest("[http://forum.imasters.com.br/random_logos/logo3.png"](http://forum.imasters.com.br/random_logos/logo3.png))); // Troque a URL pelo seu arquivo
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loadProgress);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
function loadProgress(e:ProgressEvent):void{
var loaded = e.bytesLoaded;
var total = e.bytesTotal;
var perc = Math.round((loaded/total)*100);
campo.text = perc+"%";
}
function loadComplete(e:Event):void{
addChild(loader);
}
AbraçosEu estava tentando fazer um PreLoader com barra que cresce conforme vai carregando e a porcentagem aparecendo abaixo.
Sou leigo em AS mas entendi mais ou menos seu script e coloquei a barra de carregameto só que quand termina de carregar, a barra não some. Como faço para ela sumir no final? O Child serve pra isso? Olha como ta o script:
var loader:Loader = new Loader();
loader.load(new URLRequest("ArquivoExterno.swf"));
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loadProgress);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
function loadProgress(e:ProgressEvent):void{
var loaded = e.bytesLoaded;
var total = e.bytesTotal;
var perc = Math.round((loaded/total)*100);
caixatxt.text = perc+"%";
barra.scaleX = loaded/total;
}
function loadComplete(e:Event):void{
addChild(loader);
}você remove o child da barra
Fazendo removeChild(barra)
Pimba ela sumiu
Ou faça barra.visible = false;
Abraços
berseck deu certo, muito obrigado. :)
Só mais uma dúvida, no caso eu queira definir a posição onde o swf carregado vai aparecer na página como devo aplicar isso no Loader?
Preciso criar uma função pra isso? Como seria?
Desde já, muitissimo obrigado. :D
Bom ai só fazer:
loader.x = valor desejado em pixels
loader.y = valor desejado em pixels
Abraços
Só usar o listener ProgressEvent.PROGRESS
Assim:
Abraços