Форум 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=135079)

Serge Dan 15.01.2010 08:20

И снова выпадающее меню
 
Здравствуйте, уважаемые флешеры!

Я понимаю, что темой этой уже набили изрядную оскомину... но тем не менее копался я тут всю ночь, а толком так вопрос и не решил.

Задача такова: есть мув, который реагирует на rollOver (играет анимация, разворачиваются подпункты - то есть другие мувы, вложенные в него). При наведении на каждый подпункт (под-мув, так сказать)) он так же анимируется (просто меняет цвет, всего 2 кадра). Проблема в том, что вложенные мувы не реагируют на rollOver, как известно, если есть события на внешнем муве. Это не все. Я же не зря всю ночь тут сидел :) Узнал много интересного о том как не надо делать - но так и не разобрался чтобы все заработало ((

Как та обезьяна, не понимая, в принципе, основ, из всего что тут есть по теме, решил использовать такой код, как наиболее оптимальный, на мой взгляд (спасибо автору)):

Код AS1/AS2:

m1.onRollOver = function () {
 
    this.gotoAndPlay(2);this.onMouseUp = function () {
        if (this.b1.hitTest(_root._xmouse, _root._ymouse)) {trace ("чего-то там");
        }
};
 
m1.onRollOut = function  () {
 
        this.gotoAndStop(2);
        delete this.onMouseUp ;
};

trace это, конечно, хорошо... и getUrl тоже тут работает - но мне то нужно, чтобы пункты подменю отрабатывались, меняли цвет! Пробую вот так:

Код AS1/AS2:

m1.onRollOver = function () {
 
    this.gotoAndPlay(2);
 
        if (this.b1.hitTest(_root._xmouse, _root._ymouse)) {
 
        b1.onRollOver = function () {
    this.gotoAndPlay(2);}
        }
};
 
m1.onRollOut = function  () {
 
        this.gotoAndStop(2);
        delete this.onMouseUp ;
};

Не работает ((
Понимаю, что это все должно быть просто, но никак не разберусь - как именно. Хоть убейте.

Поможете? Может, какой-то другой вариант?

PS

Поймите правильно, я не флешер, я даже не учусь (поздно уже). Вот красиво нарисовать что-то, сделать анимацию - да. Но программить - не оттуда голова выросла. Иначе бы не просил, учился бы.

Заранеее спасибо всем, кто откликнется.

Hauts 15.01.2010 08:57

Могу ошибаться, во флэше не проверял.
Код AS1/AS2:

var subMovies = [m1.b1, m1.b2, m1.b3]; // Массив вложенных мувиков
m1.onRollOver = function () {
    this.gotoAndPlay(2);
    this.onEnterFrame = function(){
        for(var i in subMovies){
            if(subMovies[i].hitTest(_root._xmouse, _root._ymouse)){
              subMovies[i].gotoAndStop(2); // Если вложенный мувик под курсором, то перебросить его на второй кадр
            } else {
              subMovies[i].gotoAndStop(1);
            }
        }
    }
};
m1.onRollOut = function () {
    delete this.onEnterFrame;
    this.gotoAndStop(2);
};


Serge Dan 15.01.2010 09:40

Вложений: 1
Попробовал - что-то не работает (

Идея классная - чтобы через массив сделать все, я бы сам точно не смог, хотя сам общий принцип мне понятен )) Но пока не получается что-то.

прикрепил исходник - может я там что-то не так делаю?

Serge Dan 15.01.2010 09:42

А, все! Разобрался!! У меня в этом примере анимация больше 2-х кадров на кнопках, потому и не работал ваш код ))

Спасибище огромное! Где тут памятник можно поставить? :)


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

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