
Estes podem igualmente ser armazenados num ficheiro externo e lidos no filme quando este é lido. A variavel “total” é usado para manter presente o numero de items no menu principal. Neste exemplo, os items do submenu são numerados de uma forma que os primeiros números depois de “stext” representam o número do item do menu que estamos a chamar, enquanto que o último número é o identificador dentro do menu. Por exempl, stext11 é o primeiro item do submenu do item 1 do menu principal, enquanto que o stext42 é o segundo item do submenu, chamado item 4 do menu principal. Poderemos alterar os valores de acordo com as nossa preferências.
Dentro do filme “menu MC” existem mais dois clips representando o menu principal e os botões do submenu. O primeiro passo para gerar um menu, é criar os botões do menu principal usando o duplicateMovieClip num loop limitado pelo comando _root.total.
for (i=1; i<=_root.total; ++i) {
menuMC.duplicateMovieClip(“menuMC”+i, i);
this["menuMC"+i]._y = this["menuMC"+(i-1)]._y+this["menuMC"+(i-1)]._height;
for (i=1; i<=_root.total; ++i) {
menuMC.duplicateMovieClip(“menuMC”+i, i);
this["menuMC"+i]._y = this["menuMC"+(i-1)]._y+this["menuMC"+(i-1)]._height;
this["menuMC"+i].choice = i;
levelTrack = i;
}
}
O próximo passo é inicializar os botões do submenu, posicionando-os e de seguida escondendo-os de forma não revoltarem a ser vistos, até contrário. Verificando se uma variável de um determinado item de menu, se existe, circunscrevemos de ter que seguir o processo completo para os itens do menu que não contêm submenus. Esses submenus que existem estão numerados usam o esquema descrito anteriormente.
for (i=1; i<=_root.total; ++i) {
if (_root["subText"+i]>=1) {
name = “stext”+i;
for (n=1; n<=_root["subText"+i]; ++n) {
levelTrack += 1;
subMenuMC.duplicateMovieClip(name+n, levelTrack);
this[name+n]._visible = false;
this[name+n].choice = (i*10) + n;
}
this[name+1]._y = this["menuMC"+i]._y+this["menuMC"+i]._height;
for (n=2; n<=_root["subText"+i]; ++n) {
this[name+n]._y = this[name+(n-1)]._y+this[name+(n-1)]._height;
}
}
}
for (i=1; i<=_root.total; ++i) {
if (_root["subText"+i]>=1) {
name = “stext”+i;
for (n=1; n<=_root["subText"+i]; ++n) {
levelTrack += 1;
subMenuMC.duplicateMovieClip(name+n, levelTrack);
this[name+n]._visible = false;
this[name+n].choice = (i*10) + n;
}
this[name+1]._y = this["menuMC"+i]._y+this["menuMC"+i]._height;
for (n=2; n<=_root["subText"+i]; ++n) {
this[name+n]._y = this[name+(n-1)]._y+this[name+(n-1)]._height;
}
}
}
function resetMenu() {
for (i=1; i<=_root.total; ++i) {
if (_root["subText"+i]>=1) {
name = “stext”+i;
for (n=1; n<=_root["subText"+i]; ++n) {
this[name+n]._visible = false;
}
}
this["menuMC"+i]._y = this["menuMC"+(i-1)]._y+this["menuMC"+(i-1)]._height;
}
}
Esta função é a primeira chamada noutra função que é chamada quando um dos items do menu é clicado. A chamada para esta função está localizada nos botões dos items dos menus.
function submenuShow() {
resetMenu();
if (_root["subText"+choice]>=1) {
name = “stext”+choice;
for (n=1; n<=_root["subText"+choice]; ++n) {
this[name+n]._visible = true;
}
this["menuMC"+(choice+1)]._y = this[name+(n-1)]._y+this[name+(n-1)]._height;
for (i=choice+2; i<=_root.total; ++i) {
this["menuMC"+i]._y = this["menuMC"+(i-1)]._y+this["menuMC"+(i-1)]._height;
}
}
}
function submenuShow() {
resetMenu();
if (_root["subText"+choice]>=1) {
name = “stext”+choice;
for (n=1; n<=_root["subText"+choice]; ++n) {
this[name+n]._visible = true;
}
this["menuMC"+(choice+1)]._y = this[name+(n-1)]._y+this[name+(n-1)]._height;
for (i=choice+2; i<=_root.total; ++i) {
this["menuMC"+i]._y = this["menuMC"+(i-1)]._y+this["menuMC"+(i-1)]._height;
}
}
}
stext21 = “cachorrinhos”;
urls21 = “http://www.flashwebtraining.com“;
on (release) {
myURL = eval(“_root.urls”+choice);
if(myURL != null){
getURL(myURL);
}
}
Para assegurar que o URL abre numa nova janela do browser, adicionem “_blank” à função getURL:
getURL(myURL, “_blank”);
getURL(myURL, “_blank”);
Igualmente, isto pode ser usado para chamar uma URL para frame já nomeada, ou para chamar um JavaScript. Usando uma abordagem similar, permite que os botões contenham diferentes scenes de acesso na _root, embora seja importante, fazê-lo, para relembrar que os nomes das scenes não serão reconhecidas através dos movie clips do menu, e o link criado terá de ser único nos nomes das frames.
0 comentários: sobre Menu Dinamico em Flash
Postar um comentário para Menu Dinamico em Flash