Ir para conteúdo

POWERED BY:

Arquivado

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

saposempre

Problema ao importar swf externo

Recommended Posts

Olá pessoal, tudo beleza?

 

Seguinte: Tenho swf principal no qual chamo outros swf's. Estava tudo funcionando bem, até que inseri nos swf's externos um preloader. Simplesmente apenas o preloader aparece e o resto do conteúdo não =/

 

O swf externo funciona normal (loader+conteúdo) quando eu testo no navegador e também no Ctrl+Enter.

 

O que poderia ser?

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta colocar na primeira linha do seu fla do arquivo externo o seguinte:

 

this._lockroot = true;

 

 

Olá pessoal, tudo beleza?

 

Seguinte: Tenho swf principal no qual chamo outros swf's. Estava tudo funcionando bem, até que inseri nos swf's externos um preloader. Simplesmente apenas o preloader aparece e o resto do conteúdo não =/

 

O swf externo funciona normal (loader+conteúdo) quando eu testo no navegador e também no Ctrl+Enter.

 

O que poderia ser?

 

Abraços.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

já coloquei. http://forum.imasters.com.br/public/style_emoticons/default/natal_tongue.gif=/

 

eu conseguia importar normal o externo antes de colocar o preloader.

e agora importo, mas apenas o preloader aparece, o conteudo do frame 2 não.

 

nem consigo entender o porque.. http://forum.imasters.com.br/public/style_emoticons/default/natal_sad.gif

 

Heeeeeeeelp http://forum.imasters.com.br/public/style_emoticons/default/natal_biggrin.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, vamos ao que está acontecendo nos minimos detalhes :D

 

Eu consigo importar o swf externo através do código:

 

alvo.loadMovie("ACADEMIA.swf");

 

E este funcionava até eu colocar um loader no swf externo ACADEMIA.

Aqui está o código do preloader:

 

Action 1:

 

var percents = 0;
    startTimer = getTimer;

 

 

Action 2:

 

clock = elapsed;
    total = _root.getBytesTotal();
    loaded = _root.getBytesLoaded();
    left = total - loaded;
    elapsed = int((getTimer() - starttimer) / 1000);
    elapsedm = int(elapsed / 60);
    elapseds = int(elapsed - elapsedm * 60);
    elapsedd = "Elapsed time: " + elapsedm + " m" + "  " + elapseds + " s";
    if (elapsed != clock)
    {
        bps = int(loaded / elapsed);
        bpsd = bps + " bps";
    } // end if
    leftt = int(left / bps);
    leftm = int(leftt / 60);
    lefts = int(leftt - leftm * 60);
    leftd = "Left time: " + leftm + " m" + "  " + lefts + " s";
    if (_root.getBytesLoaded() == _root.getBytesTotal())
    {
        percents = percents + 5;
        if (percents > 100)
        {
            percents = 100;
        } // end if
    }
    else
    {
        percents = Math.floor(_root.getBytesLoaded() / _root.getBytesTotal() * 100);
    } // end if
    gauge.gotoAndStop(percents + 1);
    label = percents;

 

 

Action 3:

 

if (percents < 100)
    {
        gotoAndPlay(2);
    }
    else
    {
        _visible = false;
        _root.gotoAndPlay("play");
        stop();
    } // end if

 

 

E sim, eu coloquei o código no primeiro frame do externo: ;)

 

this._lockroot = true;

 

 

Quando eu coloco rodar o SWF que chama o EXTERNO ele roda normal e chama o EXTERNO, porém, o EXTERNO para de 'tocar' quando o PRELOADER termina de carregar, ou seja, chega em 100%, e deveria passar para o Frame 2.

E isso não acontece quando eu 'toco' apenas o EXTERNO, ele carrega normal até 100% e quando termina passa para o Frame 2, como tem que ser :)

 

Falta tão pouco para terminar meu projeto.. me ajudem :'(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é, falei pra você colocar o _lockroot por imaginar que seria o uso de _root que estaria prejudicando, o _root se refere a timeline principal do projeto todo, quando você faz um arquivo externo e usa somente ele, sem este este ser carregado dentro de outro, ele funciona bem com o _root, mas quando você carrega ele dentro de outro arquivo, dai ele perde o _root, pois ele vai entender que o _root dali em diante será o _root do movielclip principal, então tirando o flash principal, nos outros não é nada aconselhável você usar o _root, esse _lockroot da uma enganada no flash dizendo que é pra ele considerar a timeline do swf externo como _root, porem se quiser acessar a timeline do fla principal com o uso de _lockroot você precisa usar a loucura do _root._parent tipo, se você ja estiver no chão, você pede pra passar do chão e acessar o inferno rs.

Agora falando em solução, você pode criar uma variavel em cada swf externo para indicar que você está fazendo o preloader daquela timeline e não do "_root" que seria a timeline principal, dai você poderia colocar na primeira linha da action algo como var here = this; dai você estara referenciando aquele movieclip a variavel this, dai ficaria assim seu preloader:

 

  var here = this;
 clock = elapsed;
    total = here.getBytesTotal();
    loaded = here.getBytesLoaded();
    left = total - loaded;
    elapsed = int((getTimer() - starttimer) / 1000);
    elapsedm = int(elapsed / 60);
    elapseds = int(elapsed - elapsedm * 60);
    elapsedd = "Elapsed time: " + elapsedm + " m" + "  " + elapseds + " s";
    if (elapsed != clock)
    {
        bps = int(loaded / elapsed);
        bpsd = bps + " bps";
    } // end if
    leftt = int(left / bps);
    leftm = int(leftt / 60);
    lefts = int(leftt - leftm * 60);
    leftd = "Left time: " + leftm + " m" + "  " + lefts + " s";
    if (here.getBytesLoaded() == here.getBytesTotal() && here.getBytesLoaded() > 50)
    {
        percents = percents + 5;
        if (percents > 100)
        {
            percents = 100;
        } // end if
    }
    else
    {
        percents = Math.floor(here.getBytesLoaded() / here.getBytesTotal() * 100);
    } // end if
    gauge.gotoAndStop(percents + 1);
    label = percents;

no 3:

 

if (percents < 100)
    {
        gotoAndPlay(2);
    }
    else
    {
        _visible = false;
        here.gotoAndPlay("play");
        stop();
    } // end if

Vamos ver se agora funciona :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é, falei pra você colocar o _lockroot por imaginar que seria o uso de _root que estaria prejudicando, o _root se refere a timeline principal do projeto todo, quando você faz um arquivo externo e usa somente ele, sem este este ser carregado dentro de outro, ele funciona bem com o _root, mas quando você carrega ele dentro de outro arquivo, dai ele perde o _root, pois ele vai entender que o _root dali em diante será o _root do movielclip principal, então tirando o flash principal, nos outros não é nada aconselhável você usar o _root, esse _lockroot da uma enganada no flash dizendo que é pra ele considerar a timeline do swf externo como _root, porem se quiser acessar a timeline do fla principal com o uso de _lockroot você precisa usar a loucura do _root._parent tipo, se você ja estiver no chão, você pede pra passar do chão e acessar o inferno rs.

Agora falando em solução, você pode criar uma variavel em cada swf externo para indicar que você está fazendo o preloader daquela timeline e não do "_root" que seria a timeline principal, dai você poderia colocar na primeira linha da action algo como var here = this; dai você estara referenciando aquele movieclip a variavel this, dai ficaria assim seu preloader:

 

  var here = this;
 clock = elapsed;
    total = here.getBytesTotal();
    loaded = here.getBytesLoaded();
    left = total - loaded;
    elapsed = int((getTimer() - starttimer) / 1000);
    elapsedm = int(elapsed / 60);
    elapseds = int(elapsed - elapsedm * 60);
    elapsedd = "Elapsed time: " + elapsedm + " m" + "  " + elapseds + " s";
    if (elapsed != clock)
    {
        bps = int(loaded / elapsed);
        bpsd = bps + " bps";
    } // end if
    leftt = int(left / bps);
    leftm = int(leftt / 60);
    lefts = int(leftt - leftm * 60);
    leftd = "Left time: " + leftm + " m" + "  " + lefts + " s";
    if (here.getBytesLoaded() == here.getBytesTotal() && here.getBytesLoaded() > 50)
    {
        percents = percents + 5;
        if (percents > 100)
        {
            percents = 100;
        } // end if
    }
    else
    {
        percents = Math.floor(here.getBytesLoaded() / here.getBytesTotal() * 100);
    } // end if
    gauge.gotoAndStop(percents + 1);
    label = percents;

no 3:

 

if (percents < 100)
    {
        gotoAndPlay(2);
    }
    else
    {
        _visible = false;
        here.gotoAndPlay("play");
        stop();
    } // end if

Vamos ver se agora funciona :)

 

 

Já inicio a resposta me desculpando por ser leigo.

Mesmo achando que entendi o que você quis dizer, vou perguntar:

 

1. É só eu trocar o código que tenho, por esse que você me passou, ou seja, trocar o '_root' por 'here'?

2. Tenho que fazer mais alguma coisa?

 

Se for apenas trocar o '_root' por 'here' não deu certo http://forum.imasters.com.br/public/style_emoticons/default/natal_laugh.gif

Quando dou Ctrl+Enter, no EXTERNO mesmo, aparece o preloader até 100, porém, não passa para o Frame 2.

 

Obrigado por estar me ajudando. http://forum.imasters.com.br/public/style_emoticons/default/natal_happy.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Conseguiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii \http://forum.imasters.com.br/public/style_emoticons/default/natal_w00t.gif/

 

UÁÁÁÁÁÁÁÁÁÁÁÁÁÁ!!

 

Tirei todos os 'here' e 'root' do act2 e deixei apenas no act3 o _root, também no lugar do here.

 

To tão feliz! http://forum.imasters.com.br/public/style_emoticons/default/natal_w00t.gif http://forum.imasters.com.br/public/style_emoticons/default/natal_w00t.gif http://forum.imasters.com.br/public/style_emoticons/default/natal_w00t.gif http://forum.imasters.com.br/public/style_emoticons/default/natal_w00t.gif http://forum.imasters.com.br/public/style_emoticons/default/natal_w00t.gif http://forum.imasters.com.br/public/style_emoticons/default/natal_w00t.gif http://forum.imasters.com.br/public/style_emoticons/default/natal_w00t.gif http://forum.imasters.com.br/public/style_emoticons/default/natal_w00t.gif http://forum.imasters.com.br/public/style_emoticons/default/natal_w00t.gif http://forum.imasters.com.br/public/style_emoticons/default/natal_w00t.gif http://forum.imasters.com.br/public/style_emoticons/default/natal_w00t.gif http://forum.imasters.com.br/public/style_emoticons/default/natal_w00t.gif http://forum.imasters.com.br/public/style_emoticons/default/natal_w00t.gif http://forum.imasters.com.br/public/style_emoticons/default/natal_w00t.gif http://forum.imasters.com.br/public/style_emoticons/default/natal_w00t.gif

 

Edit:

 

Esquece, me precipitei ¬¬'

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.