PDA

Просмотр полной версии : И снова выпадающее меню


Serge Dan
15.01.2010, 08:20
Здравствуйте, уважаемые флешеры!

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

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

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


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 тоже тут работает - но мне то нужно, чтобы пункты подменю отрабатывались, меняли цвет! Пробую вот так:


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
Могу ошибаться, во флэше не проверял.

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
Попробовал - что-то не работает (

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

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

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

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