PDA

Просмотр полной версии : Раздвигающееся меню, не работает gotoandplay


ohelga
29.11.2008, 23:54
Хочу сделать меню, чтобы при наведении мыши кнопка увеличивалась, а остальные уменьшались, как здесь: http://www.templatemonster.com/flash-templates/14087.html
Пока делаю для двух кнопок(потом будет5), но не работает функция gotoandplay(номер кадра мувика), флэшка переходит на соответствующий кадр и на нем останавливается, хотя должна играть дальше.
У нас есть мувик со сценариями разъезжания и съезжания для каждой кнопки и код должен нас отослать к нужному куску сценария(увеличения или уменьшения кнопки) и две невидимые кнопки, на которых прописан код с присваиванием значений переменной при наведении и отведении мышки.

Вот пример кода:

На главной сцене:

var mouse_over_icon = null;
_root.icons.onEnterFrame = function() {
if (mouse_over_icon == 1) {
_root.icons.gotoAndPlay(1);
}

else if (mouse_over_icon == 2) {
_root.icons.gotoAndPlay(11);
}

else if (mouse_over_icon == 3) {
_root.icons.gotoAndPlay(21);
}

else if (mouse_over_icon == 4) {
_root.icons.gotoAndPlay(31);
}

else {
_root.icons.gotoAndStop(1);
}

};


На первой невидимой кнопке:

on (rollOver) {
_root.mouse_over_icon = 1;
}
on (rollOut) {
_root.mouse_over_icon = 2;
}
on (release){
getURL("http://www.toxiclab.org/", "blank");
}


На второй соответственно:

on (rollOver) {
_root.mouse_over_icon = 3;
}
on (rollOut) {
_root.mouse_over_icon = 4;
}
on (release){
getURL("http://www.toxiclab.org/", "blank");
}


Почему код не работает, и как сделать чтобы заработало?

urasfinks
30.11.2008, 20:43
Возможно это не настолько легко как вы думаете(подобие кнопок). Но на вашем бы месте я бы описал 2 класса. Первый из которых был, если это можно так назвать- кнопка. Второй бы отвечал за обьекты созданные первым классом, тоесть их расположением сжатием и тд. Таким образом можно легко добавить,удалить или редактировать данную менюшку. На счёт почему не работает gotoAndStop() возможно вы пытаетесь обратиться не к тому обьекту. Возможно что этот обьект не виден в as. Попытайтесь дебагером выяснить точное расположение нужного вам обьекта для применения каких либо свойств. Но в любом случаи для того что бы при наведении все остальные уменьшались, у вас должна быть какаято общая функция, которая знает все обьекты и при активации какого либо из них пробегалась по всем и уменьшала их. Ну вообщем будите упорно биться с процедурно функциональным програмированием. Мой совет переходить на ООП. будет легче сделать.

nOobCrafter
01.12.2008, 15:16
ММм во первых писать на обьектах уже старо, удобнее писать весь код в одном месте ;). Во вторых зачем это:
on (rollOver) {
_root.mouse_over_icon = 1;
}
on (rollOut) {
_root.mouse_over_icon = 2;
Кинь исходник, может проще будет.

ohelga
02.12.2008, 13:01
Это параметр отслеживающий состояние - наведено - отведено от конкретной кнопки, чтобы знать увеличиваться ей или уменьшаться, а также что делать остальным кнопкам.
В общем, мне удалось решить проблему, надо просто изменять параметр mouse_over_icon сразу после наступления события _root.icons.gotoAndPlay(номер кадра); иначе функция onEnterFrame направит нас на этот кадр опять при проигрывании и клип зациклится. Приду домой, исходник кину.