Просмотр полной версии : "Закладка" на раздел в дин. меню?
Кудряшка Мари
03.07.2007, 16:36
Прошу вашей помощи, о великие специалисты...
Каким образом необходимо делать динамическое меню, чтобы при нажатии на кнопку производился одновременный переход на URL и фиксировалось на открывшейся странице меню с видоизмененной кнопкой раздела (в общем, типа закладки на раздел).
Единственное, что пока пришло в голову, так это переход между сценами в зависимости от нажатой кнопки, на каждой сцене меню с заложенной одной "нужной" кнопкой. Но как можно совместить getUrl и gotoAndPlay? Ведь сайт-то только с элементами флеш-анимки, а не полностью флешевый...
Быть может вы предложете более рациональное решение...
Вот так. (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);
}
Из flashvars получаем только строки. Т.е. не получим не 1, а "1".
GreatRash
04.07.2007, 12:17
ну уж не знаю, что там из flashvars получается, но приведенный выше код работает
ну уж не знаю, что там из flashvars получается, но приведенный выше код работает
Работает, из-за автоматической конвертации типов. Но стоит в голове держать чтобы не напороться. Вот простейший пример:
stop();
var1 = '1';
var2 = '2';
trace( var1 == 1 ); //true
trace( var1 + var2 ); //12
GreatRash
04.07.2007, 13:26
хм, будем знать, а как можно сменить тип переменной?
new_var = int(var1); ?
в AS1/AS2:
//считать числом
num = Number(str);
//"выдрать" число из строки
num = parseInt(str);
num = parseFloat(str);
Ну а в вашем примере можно просто написать:
//через flashvars пришло currChapter= '4'
this['button' + currChapter].gotoAndStop(5);
Или сразу передавать имя кнопки.
недавно делал такое меню... лучше обойтись без всяких кадров и переходов по ним... просто из HTML страницы передается параметр (в данном случае делал при помощи строки параметров.. на flashvars лениво переделать :) ), а флэшка в соответсвии с параметром подсвечивает кнопку...
http://www.serdceband.com/flash/menu0.html - меню на главной странице
http://www.serdceband.com/flash/menu2.html - меню на какой-то странице
PS: и без всякого PHP
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.