Menu as3 linkar os botoes e carregar swf externo para o palco principa
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!
Discussão (1)
Carregando comentários...