Ir para conteúdo

POWERED BY:

Arquivado

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

Diego Macêdo

Carregar SWF Externo AS3 de forma dinâmica

Recommended Posts

Sou iniciante do Flash e estou querendo aprender a fazer um simples sites em Flash da seguinte forma. Eu criei o layout e fiz o menu com os seus devidod buttons.

 

Agora eu gostaria de saber como eu faço para carregar as páginas que eu criei de uma forma dinâmica, tipo criando uma função que pegaria a instância de cada botão e passaria para essa função, fazendo o loading do swf externo que possuirá o mesmo nome da instância. Os SWFs devem carregar sempre na mesma posição dentro da cena principal.

 

Exemplo:

BOTÕES - INSTÂNCIA - SWF

btn_home - home - home.swf

btn_quemsou - quemsou - quemsou.swf

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Diego.

 

Bem, a resposta adequada depende do layout que você criou.

 

Por exemplo, se você deseja que a página externa seja carregada em uma posição específica, o habitual é criar um movie clip que servirá de container. Terá um instance name e será declarado no action como o local de carregamento.

 

Outra possibilidade é você usar um menu na parte inferior da página, e carregar as páginas direto na posição 0,0. Aí dispensa o container, por defaut carrega nessa posição do stage.

 

Pelo que já fui informada, também existe a possibilidade de posicionamento de uma página externa, sem container, via action, mas isso vai além do meu conhecimento atual.

 

Se puder adicionar mais informações fica melhor para tentar auxiliar.

 

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ótima explicação Elektra.

 

A minha necessidade atual mesmo é essa do MC que irá determinar a posição das outras páginas. Mas como o meu negoço é PHP, sinceramente eu não sei como eu poderia criar esta função que passaria as instâncias daquela forma que eu falei anteriormente.

 

Porque a minha idéia é a seguinte, eu criar o AS3 que irá fazer esse processo, e simplesmente criar os botões com as suas instâncias, pra quando eu quiser acrescentar mais páginas, não precisar necessariamente ir no AS3 acrescentar mais uma linha informando o novo arquivo SWF, mas sim só precisar pegar o nome da instância que já será o mesmo nome do arquivo.

 

Deu pra entender?

 

Agradeço muito a atenção!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha você até pode criar uma classe que vai ler todos os objetos existentes no palco...

E depois de ler todos os objetos pegar quem é button... ou movie clip e verificar a instancia vendo o name do objeto

 

E ai criar um código com referencia a isso.

Eu sinceramente não saberia explicar como fazer... talvez eu saiba fazer não sei nunca tentei.

 

Mas sei que é possivel...

 

Seria mais fácil você criar botões etc... relacionados a um XML ou algo fixo carregavel por quem quer alterar... igual template que a galera adora baixar em AS 2.

Acredito que seria mais fácil.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja só, eu andei pesquisando uns AS3 de carregamento de SWF externo e encontrei esse:

// Declação de Variáveis e Incialização da página HOME
var link:URLRequest=new URLRequest("home.swf");
mcCarrega.gotoAndPlay(2);

// Eventos dos Botões
home.addEventListener(MouseEvent.CLICK, clique);
empresa.addEventListener(MouseEvent.CLICK, clique);
produtos.addEventListener(MouseEvent.CLICK, clique);
contato.addEventListener(MouseEvent.CLICK, clique);

// Função clique que troca o valor da variável LINK
function clique(evt:MouseEvent):void {
	switch (evt.currentTarget) {
		case (home):
			link=new URLRequest("home.swf");
			break;
		case (empresa):
			link=new URLRequest("empresa.swf");
			break;
		case (produtos):
			link=new URLRequest("produtos.swf");
			break;
		case (contato):
			link=new URLRequest("contato.swf");
			break;
	}
	mcCarrega.gotoAndPlay(2);
}

Eu queria adaptar pra não precisar ter que inserir os eventos dos botões, incrementar um "case" no 'switch', sempre que eu acrescentar um botão no meu menu.

 

Seria mais ou menos isso aí de pesquisar os botões da cena de forma dinâmica. Isso se não for complicar muito o código, pois já não sou apto a trabalhar com AS3. Um dia ainda crio coragem para começar a estudar mais isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse código que voce achou, resolve sua dúvida inicialmente, mas você ja surgiu com outra sugestão, basicamente você teria que fazer com xml o menu, pra cada no que tiver no xml ele gerar o botao e seu respectivo evento.

Se é o que eu entendi, e se for isso tem aos montes em as 2 e até em as 3

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Diego.

 

Dei uma olhada num exemplo em layout líquido e AS3 externo (do meu instrutor).

 

O que você deseja precisa de XML para carregar os itens do menu, mas o action é bem diferente.

 

Isso vai bem além do conhecimento básico, além de um package com vários 'imports', terá uma public class Principal extends MovieClip onde será criado o carregador para o XML, e uma public function Principal onde será definido as outras functions para o posicionamento e ações de click, além dos outros elementos da página.

 

A única coisa simples é o XML, que recebe apenas o texto dos itens do menu e o endereço das páginas swf.

 

Fica melhor se você conseguir baixar um template para comprender o uso.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente fica inviável isso, acho melhor utilizar este exemplo que eu postei.

 

Obrigado a atenção de todos! :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tudo bem Elektra, eu sou um completo ignorante em Flash, realmente não sou muito apto a mecher com essa tecnologia, só que estou sendo 'obrigado' a aprender.

 

Meu negoço mesmo é PHP. E caso surja alguma dúvida lá no fórum de PHP sua ou de qualquer um daqui, eu farei o possível para ajudar. Obrigado pela atenção de todos! :)

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Diego já tentou alguma coisa assim?


var objs:Array = new Array(home, contact);

for(var i = 0; i < objs.length; i++){
	objs[i].addEventListener(MouseEvent.CLICK, clickHandler);
}

function clickHandler(mEvent:MouseEvent):void {
	var loader:Loader = new Loader();
	trace(mEvent.currentTarget.name);
	loader.load(new URLRequest(mEvent.currentTarget.name+".swf"));
}

Esse primeiro array ai poderia ser fácilmente populado por um XML

 

Abraços

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.