Ir para conteúdo

Arquivado

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

Annes

ActionScript 2

Recommended Posts

Boa tarde, galera. Estou fazendo um infográfico animado. O problema é que, como o arquivo fica megalo-grande, preciso separá-lo em 5:

 

- principal.swf

- interacao1.swf

- interacao2.swf

- interacao3.swf

- interacao4.swf

 

No arquivo principal há um link para cada um dos arquivos "interacao". O código está assim:

 

Na primeira linha do primeiro frame do arquivo do arquivo principal, tem este código:

 

_root.createEmptyMovieClip("clipAlvo", _root.getNextHighestDepth());

 

Depois, ainda no arquivo principal, na linha onde chamo cada um dos arquivos:

 

_root.clipAlvo.loadMovie("cont/interacao1.swf");

 

Até aí, blz... funciona direitinho... Só que tem 3 probleminhas:

 

  1. O arquivo principal fica ativo enquanto os arquivos interação estão rodando. Acontece que o usuário consegue clicar nos links do arquivo principal, o que atrapalha muito. Porém, quando o usuário termina de ver o interacao1.swf, ele deve voltar para o principal.swf. Como faço isso?
  2. não consegui chamar no botão o "_root.clipAlvo.loadMovie("cont/interacao1.swf");", então, tive que dar um gotoAndPlay pra um frame, e no frame chamar o arquivo "interacao".
  3. Para dar o "unloadMovie(this)" tbm tive problema... Se eu coloco no frame geral, como no primeiro exemplo abaixo, somente o botão descarrega. Só funciona se eu coloco o código direto no botão, como no segundo exemplo abaixo:

Frame geral: não dá certo, descarrega somente o botão bt_fechar

bt_fechar.onRelease = function() {
	unloadMovie(this);
};

Se eu clico no botão, e coloco o código direto nele, desta forma, consigo descarregar o filme interacao1.swf:

on (release) {
	unloadMovie(this);

}

 

 

O pior é que eu já tinha conseguido resolver estes problemas uma vez, mas não estou achando o arquivo onde fiz isso... e de cabeça tbm não lembro...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meio confuso mas vamos lá:

1 - Ao carregar um swf, desative os botões do filme principal, se for muitos elementos, uma sugestão seria criar um botao transparente que ocupe a área toda do filme e que fique entre o principal e o swf que foi carregado. 1A- Quando terminar de rodar o swf externo coloque a ação para descarregar este e voltar ao frame desejado do filme principal.

2 - Provavelmente erro na ação ou em outro local.

3 - Estude mais sobre o "this" e entenda a sua referência.

 

Sugestão: O melhor seria trabalhar com a classe MovieClipLoader, muito mais completa e te dá controle total nas ações.

 

Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sei que é meio confuso mesmo entender todo o projeto assim, mas se tiver alguma coisa que vc precisar mais detalhadamente pra me ajudar, só falar... eu vou explicando tudo o que eu to fazendo...

 

As dúvidas continuam:

1- Como é que faço para isso acontecer: "Ao carregar um swf, desative os botões do filme principal, "

1A - Como faço isso: Quando terminar de rodar o swf externo coloque a ação para descarregar este e voltar ao frame desejado do filme principal. Esta é realmente a necessidade que eu tenho... não me lembro o código, e não consigo desenvolvê-lo sozinha.

1B - Não vejo necessidade de criar um botão transparente, pois assim, o mouse ficaria o tempo todo com o formato de mãozinha, e eu preciso que ele fique assim somente onde houverem links no swf externo... além disso, são apenas 4 botões.

2- como resolvo o erro da ação "_root.clipAlvo.loadMovie("cont/interacao1.swf");?

3 - Eu sei que o "this" se refere ao elemento... porém, quando utilizei o nome do arquivo para descarregar, deu erro, e eu não soube resolver. Como eu poderia resolver?

 

4 - não sei trabalhar com o MovieClipLoader... quando fiz um curso, há alguns anos atrás, só aprendi o loadMovie, por isso o utilizo... mas se vc puder (e quiser) me ajudar, quem sabe eu passe a usá-lo... ele tbm serve para carregar um swf externo? Como eu o utilizaria?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, vamos tenta resolver esse problema depois se for do seu interesse passo uns links interessantes sobre uso da classe MovieClipLoader.

Você tem 4 botões no fime principal onde cada um chama um swf externo então criamos um mc "clipAlvo" receptor para receber esses swfs:

_root.createEmptyMovieClip("clipAlvo", _root.getNextHighestDepth());

Ao chamar qualquer swf, desativamos os botões do filme principal, ex:

bt1.onRelease = function() {
    loadMovie("filme1.swf", _root.clipAlvo);
    bt1.enabled = false;
    bt2.enabled = false;
    bt3.enabled = false;
    bt4.enabled = false;
}

Repare que na ação do botao1, carregamos o respectivo filme1 e desativamos todos os botões inclusive o próprio. Basta repetir as ações para os demais botões alterando somente o respectivo filme.

 

No final de cada swf externo, coloque por exemplo um botão de fechar ou no último frame da animação as ações para descarregar o filme atual e ativar novamente os botões do filme principal, ex:

unloadMovie(_root.clipAlvo);
_root.bt1.enabled = true;
_root.bt2.enabled = true;
_root.bt3.enabled = true;
_root.bt4.enabled = true;

 

Acredito que com essas ações seu problema será resolvido.

Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok,. amanhã vou testar isso, eu acho que eu já tinha tentado algo parecido mas não tinha dado certo... mas não me lembro o que eu tinha feito diferente...

 

 

YESSS!!! Deu certo!!! Eu não me lembro o que eu tinha feito, mas eu lembrei agora que eu tinha feito a referência ao bt1,enabled diferente do que vc fez, com o _root na frente! Eu acho que eu estava fazendo com _root.clipAlvo... mas não tenho certeza!

 

 

 

De qualquer forma, o resultado ficou ótimo! Obrigada pela ajuda!

 

Quanto aos links interessantes sobre uso da classe MovieClipLoader, gostaria sim que vc me passasse!

 

 

Só faltou agora resolver o problema de colocar as coisas dentro do botão... queria por no frame, e chamar o botão...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom que resolveu, sucesso no projeto.

 

Link de referência e estudo da classe MovieClipLoader:

http://imasters.com.br/artigo/3593/flash/moviecliploader-e-loadmovie/

http://docs.brajeshwar.com/as2/MovieClipLoader.html

http://help.adobe.com/en_US/as2/reference/flashlite/WS5b3ccc516d4fbf351e63e3d118ccf9c47f-7d08.html

 

 

Só faltou agora resolver o problema de colocar as coisas dentro do botão... queria por no frame, e chamar o botão...

 

É só colocar as ações no frame desejado e na ação do botao um "gotoAndStop(numero ou label do frame que contém as ações)".

 

Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

então, as ações estavam num frame stop. Quer dizer, quase todas as ações estão neste frame. Eu crio uma linha onde só coloco as ações... mas aquele caso, só funcionou colocando o unloadMovie (this), e dentro do botão...

 

Como é que posso colocar o unloadMovie no frame? Queria colocar assim:

 

no frame, chamar o botão, e mandar dar unloadMovie do filme... por exemplo:

 

bt_fechar.onRelease = function() {
	unloadMovie(COMO-CITAR-O-FILME);
};

 

Ali onde coloquei o COMO-CITAR-O-FILME é que eu to usando o "this" dentro do botão... mas eu não queria deixar assim, queria colocar no frame junto com todas as outras ações que tem lá... mas não sei como me referir ao filme.

 

Neste caso, estou no arquivo interacao1.swf, por exemplo, e quero fechá-lo, descarregá-lo para voltar para o principal.swf

 

Deu pra entender ou ficou muito confuso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não cita o nome do swf e sim o objeto container onde foi carregado este swf que no caso é o "clipAlvo" criado no palco "_root", então ficaria: unloadMovie(_root.clipAlvo); - Exemplo já citado no #post4.

 

Coloque todas as ações no último frame do swf carregado e no início do filme para rodar com o mesmo, um botão de fechar somente com a ação "gotoAndStop(ultimo_frame)" ou seja, caso o usuário não queira rodar o filme todo que automaticamente será fechado ao final (pelas ações), terá a opção de fechar/descarregar clicando no botão que chama as ações do último frame.

 

Att.

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.