Jump to content


Photo

Dúvida, Níveis, Loadmovie


  • Faça o login para participar
1 reply to this topic

#1 Lua Marinho

Lua Marinho

    Novato no fórum

  • Usuários
  • 1 posts
  • Sexo:Feminino
  • Localidade:Curitiba

Posted 25/06/2009, 12:03

Bom galera, meu primeiro post aqui e já é um super pepino.
Eu fiz um site todo em flash, e na hora de importar o layout eu importei maior, e redimensionei...
depois de muita coisa pronta, eu fui testar as páginas internas que eu pretendia usar com loadmovie, e tive uma surpresa
que pelo meu mc ter sido redimensionado, tudo que eu mandasse abrir ele iria redimensionar, ou seja, faço a página com o tamanho certo e ela abre com 42% de seu tamanho original.
então eu pesquisei e pesquisei e achei o seguinte código, para carregar em níveis:

on (release) {createEmptyMovieClip("filme", 1);loadMovie("teste.swf", filme);filme._x = -1900;filme._y = 70;filme._xscale = 220;filme._yscale = 220;}

e deu certo, em partes, pois eu não sei trabalhar com níveis, e gostaria de entender,
por exemplo como eu faço para criar um botão que fecha essa página interna,
voltar ao nível 0, se é possivel criar no próprio swf que eu carreguei no nivel 1 um fecha q da um unloadmovie nele mesmo?
se voces observarem, tem um controle do mouse pro site rodar, quando subo um nível, tem como esse controle ficar inativo? ficar parado?

site teste publicado ---> http://www.dpatrick.com.br/teste (o teste de página interna está na caixa de projetos em baixo da tv)

bom galera, espero que eu tenha explicado direitinho a minha dúvida...
obrigada desde já.

Edição feita por: Lua Marinho, 25/06/2009, 12:07.


#2 Saruman

Saruman

    Veterano

  • Usuários
  • 1112 posts
  • Sexo:Masculino
  • Localidade:São Paulo, SP

Posted 27/06/2009, 15:42

Bom, vejamos. Antes de mais nada é importante que você diga com que versão de ActionScript está lidando. Irei tentar explicar utilizando a sintaxe de ActionScript 2.

O termo correto para o que está se referindo, na verdade, é profundidade. Observe:
MovieClip.createEmptyMovieClip(instanceName, depth);
O comando createEmptyMovieClip cria um MovieClip (MC), instanciado instaceName dentro de um outro MC (aqui mostrado como MovieClip). A parte chave em sua pergunta é o parametro depth. Ele nada mais é do que uma indicação de profundidade do MovieClip. Quando maior o numero mais para frente o MC está. Isto é, um MC que tem depth = 10 sempre estara sobre um MC que tem depth 1.
Existe também uma limitação, dois MC nunca podem ocupar a mesma profundidade.
Basta fazer o teste:
_root.createEmptyMovieClip("a", 10);
a.lineStyle(2,0x000000,100);
a.moveTo(0,0);
a.lineTo(10,10);
Executar este código, mostra uma linha no canto superior esquerdo do filme.
Adicione agora o comando:
_root.createEmptyMovieClip("b", 10);
Veja que o código tenta criar um novo MC na mesma profundidade que o anterior. Neste caso, o MC "a" será excluido, e o "b" tomará sua posição.

O que em geral se costuma fazer quando se cria um novo MC, é utilizar o comando getNextHighestDepth, este comando retorna o primeiro valor de profundidade desocupado. O uso é o seguinte:
_root.createEmptyMovieClip(instanceName, _root.getNextHighestDepth());
Neste caso cria-se um MC nomeado instanceName na primeira profundidade disponível na raiz do filme. Com isso nunca alguma MovieClip será acidentamente "excluído".

Agora, para a duvida de fechar um MC. Ao se criar um MC dessa forma:
_root.createEmptyMovieClip("filme", _root.getNextHighestDepth());
loadMovie("teste.swf", _root.filme);
O filme "teste.swf" passa a ter um nome "filme". Este nome é unico e o identifica.
Suponhamos que na raiz do arquivo "teste.swf", existisse um código:
trace(this)
Se este filme fosse executado isoladamente apareceria:
_level0
Agora se ele fosse carregado pelo código acima, a mensagem seria:
_level0.filme

Um botão fecha poderia então ser feito da seguinte forma:
_root.botao_fecha.onPress = function():Void {
     this._parent.unloadMovie();
}
(codigo na raiz de teste.swf, que contem um botao também na raiz nomeado botao_fechar) Isso deve funcionar.

Agora, quando ao rodar.
Voce poderia criar uma variavel de controle, que indicasse se existe um MC aberto ou nao. Poderia funcionar mais ou menos assim:

var aux = new Boolean(true);
abrir.onPress = function():Void {
	_root.aux = false;
}

E novamente, no botao fechar do "teste.swf":
_root.botao_fecha.onPress = function():Void {
	 _root.aux = true;
	 this._parent.unloadMovie();
}

Bastaria então implementar que o site só rode se aux == true.

Espero que tenha ficado claro.

Obs: na verdade até existe o termo nível, mas em geral é aplicado a um outro tipo de operação, por exemplo o loadMovieNum, mas o uso do loadMovie comum é muito mais simples e eficiente, em geral.

Edição feita por: Saruman, 27/06/2009, 15:43.

import Profile;

var saruman:Profile = new Profile();

saruman.nome = new String("Tiago S. Kaneta");

saruman.localizacao = new Array("São Paulo","SP");




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq