Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   "Закладка" на раздел в дин. меню? (http://www.flasher.ru/forum/showthread.php?t=97950)

Кудряшка Мари 03.07.2007 16:36

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

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

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

Север 03.07.2007 16:38

Вот так.

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

Цитата:

Сообщение от GreatRash
ну уж не знаю, что там из 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);

Или сразу передавать имя кнопки.


Часовой пояс GMT +4, время: 07:47.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.