PDA

Просмотр полной версии : "Закладка" на раздел в дин. меню?


Кудряшка Мари
03.07.2007, 16:36
Прошу вашей помощи, о великие специалисты...
Каким образом необходимо делать динамическое меню, чтобы при нажатии на кнопку производился одновременный переход на URL и фиксировалось на открывшейся странице меню с видоизмененной кнопкой раздела (в общем, типа закладки на раздел).

Единственное, что пока пришло в голову, так это переход между сценами в зависимости от нажатой кнопки, на каждой сцене меню с заложенной одной "нужной" кнопкой. Но как можно совместить getUrl и gotoAndPlay? Ведь сайт-то только с элементами флеш-анимки, а не полностью флешевый...

Быть может вы предложете более рациональное решение...

Север
03.07.2007, 16:38
Вот так. (http://noregret.org/tutor/navigation/)

GreatRash
03.07.2007, 16:59
Сделать это можно при помощи PHP. Передать во Флеш переменную в зависимости от того какой URL загрузился, а потом если допустим переменная var = 1, то соответствующий клип переходит на соответствующий кадр.

toСевер
чет по той ссылке непонятно нифига...

Кудряшка Мари
04.07.2007, 10:26
Только как одновременно флешка сможет менять кадр и открывать новую страницу? Ведь на новой странице подгружается та же менюшка и все начинается сначала...

GreatRash
04.07.2007, 11:45
Правильно заново, только значение переменной на другом URL будет другое

короче чтоб дальше не рассуждать:


<?

//Спрашиваем какой URL сейчас в адресной строке

$url = getenv("REQUEST_URI");

//Если после URL присутствуют знаки вопроса (т.е. PHP'шные переменные)

if (substr_count($url,'?') > 0) {

//удаляем все что после знака вопроса, оставляем только URL и записываем его в переменную $new_url

list($new_url,$null) = explode('?',$url);

//присваиваем переменной $url значение $new_url (фиг знает зачем, для удобства)

$url = $new_url;
}

//дальше вроде и так понятно...

if (($url == "/index.php") || ($url == "/")) {
$value = 1;
} else if ($url == "/1page.php") {
$value = 2;
} else if ($url == "/2page.php") {
$value = 3;
} else if ($url == "/3page.php") {
$value = 4;
} else if ($url == "/4page.php") {
$value = 5;
}
?>

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="990" height="57" id="menu" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="menu.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />

<!-- тут переменная передается во Flash -->
<param name="flashvars" value="_var1=<?=$value;?>">
<!-- тут переменная передается во Flash -->

<!-- и тут тоже вписываем -->
<embed src="menu.swf" flashvars="_var1=<?=$value;?>" quality="high" bgcolor="#ffffff" width="990" height="57" name="menu" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>

и в ActionScript'е пишем

if (_var1 == 1) {
button1.gotoAndStop(5);
} else if (_var1 == 2) {
button2.gotoAndStop(5);
} else if (_var1 == 3) {
button3.gotoAndStop(5);
} else if (_var1 == 4) {
button4.gotoAndStop(5);
} else if (_var1 == 5) {
button5.gotoAndStop(5);
}

Kikasso
04.07.2007, 11:50
Из flashvars получаем только строки. Т.е. не получим не 1, а "1".

GreatRash
04.07.2007, 12:17
ну уж не знаю, что там из flashvars получается, но приведенный выше код работает

Kikasso
04.07.2007, 12:36
ну уж не знаю, что там из flashvars получается, но приведенный выше код работает
Работает, из-за автоматической конвертации типов. Но стоит в голове держать чтобы не напороться. Вот простейший пример:
stop();
var1 = '1';
var2 = '2';
trace( var1 == 1 ); //true
trace( var1 + var2 ); //12

GreatRash
04.07.2007, 13:26
хм, будем знать, а как можно сменить тип переменной?
new_var = int(var1); ?

Kikasso
04.07.2007, 17:35
в AS1/AS2:
//считать числом
num = Number(str);
//"выдрать" число из строки
num = parseInt(str);
num = parseFloat(str);
Ну а в вашем примере можно просто написать:
//через flashvars пришло currChapter= '4'
this['button' + currChapter].gotoAndStop(5);
Или сразу передавать имя кнопки.

Ведьмак
13.07.2007, 21:32
недавно делал такое меню... лучше обойтись без всяких кадров и переходов по ним... просто из HTML страницы передается параметр (в данном случае делал при помощи строки параметров.. на flashvars лениво переделать :) ), а флэшка в соответсвии с параметром подсвечивает кнопку...

http://www.serdceband.com/flash/menu0.html - меню на главной странице
http://www.serdceband.com/flash/menu2.html - меню на какой-то странице

PS: и без всякого PHP