2010-03-10 7 views
0

J'essaie de créer un menu de navigation Flash dynamique qui désactivera le bouton de la page que vous êtes en laissant le bouton dans l'état «hit», puis l'active une fois que vous avez appelé une nouvelle page et désactiver le nouveau bouton.Menu de navigation Flash dynamique

Je sais que cela peut être fait avec des clips et de l'ancienne école gotoAndPlay/Stop légère de la main, mais je voudrais le faire dans ActionScript donc c'est agréable, propre et évolutif pour d'autres projets.

J'ai posté mon essai dans un fichier zip à

http://www.webstudioproductions.com/navtry.zip

S'il vous plaît rejouent en arrière avec une aide

// Edité Addition

J'appelle ce swf d'un php inclure la fonction. Quand j'ai essayé le swf dans son état actuel tous les boutons mais la page d'accueil où désactivé et la maison qui aurait dû être éteint laisser un utilisateur se retourner et devenir actif. MovieClip est une classe dynamique de sorte que vous pouvez lui donner des propriétés supplémentaires.

stop(); 

//get page string 

var pageURL:String=ExternalInterface.call('window.location.href.toString'); 

//set up website pages 

var homeURL:String=('http://www.webstudioproductions.com/index.html'); 
var servicesURL:String=('http://www.webstudioproductions.com/services.html'); 
var portfolioURL:String=('http://www.webstudioproductions.com/portfolio.html'); 
var associatesURL:String=('http://www.webstudioproductions.com/associates.html'); 
var contactusURL:String=('http://www.webstudioproductions.com/contactus.html'); 

// show rollover state of pageURL 

function pageLoad():void { 

if(pageURL==homeURL) { 

    nav.nav_home.gotoAndPlay("hit"); 

}else if(pageURL==servicesURL){ 

    nav.nav_service.gotoAndPlay("hit"); 

}else if(pageURL==portfolioURL){ 

    nav.nav_portfolio.gotoAndPlay("hit"); 

}else if(pageURL==associatesURL){ 

    nav.nav_associates.gotoAndPlay("hit"); 

}else if(pageURL==contactusURL){ 

    nav.nav_contactus.gotoAndPlay("hit"); 

}else{ 
    gotoAndStop(1); 
} 
} 
pageLoad(); 




/* main nav */ 

nav.nav_home.buttonMode = true; 
nav.nav_home.addEventListener(MouseEvent.ROLL_OVER, onButtonOver); 
nav.nav_home.addEventListener(MouseEvent.ROLL_OUT, onButtonOut); 
nav.nav_home.addEventListener(MouseEvent.CLICK, nav_homeClick); 

nav.nav_service.buttonMode = true; 
nav.nav_service.addEventListener(MouseEvent.ROLL_OVER, onButtonOver); 
nav.nav_service.addEventListener(MouseEvent.ROLL_OUT, onButtonOut); 
nav.nav_service.addEventListener(MouseEvent.CLICK, nav_serviceClick); 

nav.nav_portfolio.buttonMode = true; 
nav.nav_portfolio.addEventListener(MouseEvent.ROLL_OVER, onButtonOver); 
nav.nav_portfolio.addEventListener(MouseEvent.ROLL_OUT, onButtonOut); 
nav.nav_portfolio.addEventListener(MouseEvent.CLICK, nav_portfolioClick); 

nav.nav_associates.buttonMode = true; 
nav.nav_associates.addEventListener(MouseEvent.ROLL_OVER, onButtonOver); 
nav.nav_associates.addEventListener(MouseEvent.ROLL_OUT, onButtonOut); 
nav.nav_associates.addEventListener(MouseEvent.CLICK, nav_associatesClick); 

nav.nav_contactus.buttonMode = true; 
nav.nav_contactus.addEventListener(MouseEvent.ROLL_OVER, onButtonOver); 
nav.nav_contactus.addEventListener(MouseEvent.ROLL_OUT, onButtonOut); 
nav.nav_contactus.addEventListener(MouseEvent.CLICK, nav_contactusClick); 

function onButtonOver(e:MouseEvent):void 
{ 
e.currentTarget.gotoAndPlay("over"); 
} 

function onButtonOut(e:MouseEvent):void 
{ 
e.currentTarget.gotoAndPlay("out"); 
} 




/* main nav */ 

function nav_homeClick(e:MouseEvent):void 
{ 
var nav_homeURL:URLRequest = new URLRequest ("http://www.webstudioproductions.com/index.html"); 
navigateToURL(nav_homeURL, "_parent"); 
} 

function nav_serviceClick(e:MouseEvent):void 
{ 
var nav_serviceURL:URLRequest = new URLRequest ("http://www.webstudioproductions.com/services.html"); 
navigateToURL(nav_serviceURL, "_parent"); 
} 

function nav_portfolioClick(e:MouseEvent):void 
{ 
var nav_portfolioURL:URLRequest = new URLRequest ("http://www.webstudioproductions.com/portfolio.html"); 
navigateToURL(nav_portfolioURL, "_parent"); 
} 

function nav_associatesClick(e:MouseEvent):void 
{ 
var nav_associatesURL:URLRequest = new URLRequest ("http://www.webstudioproductions.com/associates.html"); 
navigateToURL(nav_associatesURL, "_parent"); 
} 

function nav_contactusClick(e:MouseEvent):void 
{ 
var nav_contactusURL:URLRequest = new URLRequest ("http://www.webstudioproductions.com/contactus.html"); 
navigateToURL(nav_contactusURL, "_parent"); 
} 

Répondre

0

Une façon de contourner cela est de donner à chaque élément de menu une valeur booléenne isSelected. Ensuite, dans la classe parent, vous stockez tous les éléments dans un tableau et contrôlez la valeur sélectionnée.

Le système simple j'utilise va quelque chose comme ça

donnent chaque menu une valeur booléenne isSelected
empêchent l'animation de désélection si isSelected == true
stocker tous les boutons de menu dans un tableau
créer un setOn et la fonction de compensation pour chaque élément de menu
lorsque le menu est pressée, une boucle sur tous les boutons et mettre à jour les états sélectionné

function onButtonOut(e:MouseEvent):void 
{ 
    if(!isSelected) e.currentTarget.gotoAndPlay("out"); 
}