Форум 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)
-   -   Раздвигающееся меню, не работает gotoandplay (http://www.flasher.ru/forum/showthread.php?t=118641)

ohelga 29.11.2008 23:54

Раздвигающееся меню, не работает gotoandplay
 
Хочу сделать меню, чтобы при наведении мыши кнопка увеличивалась, а остальные уменьшались, как здесь: http://www.templatemonster.com/flash...tes/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

ММм во первых писать на обьектах уже старо, удобнее писать весь код в одном месте ;). Во вторых зачем это:
Код AS1/AS2:

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 направит нас на этот кадр опять при проигрывании и клип зациклится. Приду домой, исходник кину.


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

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