Динамическое меню навигации Flash - PullRequest
0 голосов
/ 10 марта 2010

Я пытаюсь создать меню навигации с динамической флеш-памятью, которое отключит кнопку страницы, на которой вы находитесь, оставив кнопку в состоянии «нажатие», а затем активирует ее после вызова новой страницы и деактивации новой кнопки. .

Я знаю, что это можно сделать с помощью видеоклипов и некоторых старых инструментов gotoAndPlay / Stop, но я хотел бы сделать это в ActionScript, чтобы он был красивым, чистым и масштабируемым для других проектов.

Я разместил свою попытку в zip-файле на

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

Пожалуйста, переиграйте с любой помощью

// Отредактированное дополнение

Я вызываю этот SWF-файл из функции включения php. Когда я попробовал swf в его текущем состоянии, все кнопки, кроме домашней страницы, где она деактивирована и home, которая должна была быть отключена, позволяют пользователю переворачиваться и становиться активными.

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");
}

1 Ответ

0 голосов
/ 11 марта 2010

MovieClip - это динамический класс, поэтому вы можете дать ему дополнительные свойства. Один из способов обойти это - присвоить каждому элементу меню логическое значение isSelected. Затем в родительском классе вы сохраняете все элементы в массиве и управляете выбранным значением.

Простая система, которую я использую, выглядит примерно так

присвойте каждому меню логическое значение isSelected
запретить отмену выбора анимации, если isSelected == true
сохранить все кнопки меню в массиве
создать функцию setOn и setOff для каждого пункта меню
при нажатии меню переключаться между всеми кнопками и обновлять выбранные состояния

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