Ir para conteúdo

POWERED BY:

Arquivado

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

Guilhermecrespo

Menu as3 linkar os botoes e carregar swf externo para o palco principa

Recommended Posts

Olá pessoal, beleza??

 

Estou com uma grande dificuldade no site no qual estou desenvolvendo.

 

Bem fiz um site no estilo FluidLayout e com o menu no estilo MAC(Dock Apple Stile). EU NÃO CONSIGO LINKAR O MENU PARA ABRIR O SWF EXTERNO NO PALCO PRINCIPAL DO SITE!

 

Alguém pode me ajudar???????

 

Já vi vários tópicos e nenhum deu certo para o projeto.

 

meu e-mail é guilhermecrespo@guilhermecrespo.com

 

O código que estou usando é este:

 

package {

 

import flash.display.*;

import flash.events.*;

import flash.net.*;

import FluidLayout.*;

 

 

 

public class Website extends MovieClip{

 

public function Website()

{

 

/* Alinhamento do palco */

stage.scaleMode = StageScaleMode.NO_SCALE;

stage.align = StageAlign.TOP_LEFT;

 

var title = new Title();

addChild(title);

 

var middle = new Middle();

addChild(middle);

 

var footer = new Footer();

addChild(footer);

 

/* Alinhamento Logo */

var titleParam = {

x:0,

y:0,

offsetX:0,

offsetY:0

}

new FluidObject(title,titleParam);

 

/* Alinhamento do SWF EXTERNO */

var middleParam = {

x:0.5,

y:0.5,

offsetX: -middle.width/2,

offsetY: -middle.height/2

}

new FluidObject(middle,middleParam);

 

/* Alinhamento do Menu */

var footerParam = {

x:0.5,

y:1,

offsetX: -footer.width/2,

offsetY: -footer.height/2

 

}

new FluidObject(footer,footerParam);

 

//PEGUEI O CÓDIGO NO IMASTER FORUM//

//OS BOTÕES NO ARQUIVO FLA estão com a extensão MOVIECLIP//

// Supondo então que você tem três botões, Apple, Configuration e Contact.

Apple.onRelease = function():Void {

// seus códigos aqui...

this.enabled = false;

}

 

Configuration.onRelease = function():Void {

// seus códigos aqui...

this.enabled = false;

/* Já que "Configuration" desligou, vamos reativar Apple e Contact, caso eles tenha sido usados

anteriormente e estejam desativados. Senão daqui a pouco todos os botões estarão desativados...*/

Apple.enabled = true;

Contact.enabled = true;

}

 

// crio uma lista com todos os botões que desejo:

var arrBotoes:Array = new Array(Apple,Configuration,Contact);

 

// crio uma variável que vai armazenar o último botão clicado, para futura referência.

var botaoAtual:Button = new Button();

 

/* Já que o minha lista arrBotoes pode ter um número enorme de itens, vou fazer um looping que vai passar por todos de uma vez só. Assim todos, quando forem clicados, vão chamar a mesma função, em vez de digitar um onRelease para cada botão. */

for (var i:Number = 0; i < arrBotoes.length; i++) {

var botaoDaVez:Button = arrBotoes;

botaoDaVez.onRelease = function():Void {

/* Toda vez que um botão for clicado, ele vai sempre chamar uma função chamada 'gerenciarBotoes' e passará a si próprio como um parâmetro*/

gerenciarBotoes(this);

}

}

 

// Agora escrevo uma função que vai gerenciar qual botão foi clicado e o que deve ser feito em cada caso:

function gerenciarBotoes(btClicado:Button):Void {

// vou armazenar na variável botaoAtual, que criei acima, o botão clicado.

botaoAtual = btClicado;

 

// Agora vou ativar todos:

var i:Number = arrBotoes.length;

while(i) {

i--;

arrBotoes.enabled = true;

}

 

// Bom. Agora que ativei todos, desativo o botão clicado, já que ele é o botão ativo:

btClicado.enabled = false;

 

// Agora vou fazer um "switch" para dizer o que o flash vai fazer para cada botão desses:

switch (btClicado) {

case Apple:

trace("aqui os códigos para o botão home");

break;

case Configuration:

trace("aqui os códigos para o botão produtos");

break;

case Contact:

trace("aqui os códigos para o botão contato");

break;

// Caso nenhum dos códigos acima sejam efetuados, dizer que algo deu errado....

default:

trace("Não foi encontrada nenhuma ação para o botão: " + btClicado);

}

 

/* Bom. Agora vamos dizer o seguinte: esses botões, todos eles, servem só pra carregar arquivos swf externos. Tem como otimizar isso?

Claro que tem! Podemos retirar o "_btn" do nome e usar o próprio nome do botão para carregar seus respectivos swfs.

Vamos supor que seu objeto MovieClipLoader que vai carregar os swfs seja "myMCL". Apague o switch acima faça como abaixo:

*/

 

 

/* Todos os botões no flash devem ter nome de instância terminado por "_btn". Então basta retirar os últimos 4 caracteres para usarmos

a parte desejada do nome. Fazemos isso com o método "substr" que "corta" pedaços de strings. Você pode encontrar mais

informações sobre esse método no help do flash */

 

var swf:String = btClicado._name.substr(0, (btClicado._name.length - 4)) + ".swf";

 

// Agora carregamos o swf desejado no movieClip "middle", por exemplo:

myMCL.loadClip(swf, middle);

 

/* Veja que para isso funcionar, o botão Apple deve chamar o swf "home.swf" e o botão Configuration deve chamar o swf "produtos.swf", etc.

Com essa abordagem, se o cliente pedir para inserir o botão "Photo", basta você ir até o array lá no começo do código e adiconar "Photo"

no final da lista. O resto ficou tudo automático. Ativa, dessativa, carrega, tudo. Sem mecher em mais código nenhum.*/

}

}

}

}

 

Obrigado!

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.