PDA

Просмотр полной версии : Всплывающее меню. Ребят, помогите!


Orgy
30.05.2008, 11:53
Ребят. Помогите пожалуйста. Тут такая проблема.
Решил попрактиковаться с созданием менюшки, а вот беда-то. Менюшка получилась, но функционирует не полностью.
Суть ее такова.
Аттачатся кнопки. Внутри этих кнопок есть мувик, в который аттачатся другие-дочерние кнопки.
Значит, при наведении курсора на родительскую кнопку, тот мувик, который внутри этой кнопки, содержащий в себе дочерние кнопки должен выезжать вправо. А при убирании курсора уежать обратно, т.е. влево.
Все это прекрасно работает.
Проблема в том, что нет никакой реакции на нажатие дочерних кнопок. Я сделал трасировку, при нажатии должен вывести ее номер. Но ничего не происходит. Судя по всему это из-за того, что на родителя действует onRollOver. Поэтому на дочернюю не может действовать onPress. Но я не знаю, как это решить. Помогите пожалуйста решить проблему.
Заранее спасибо.

Вот код
var nam:Array = [];
var namm:Array = [];
var kolvo:Array = [3,2,6,0,1,3];
total = 6;
u=0;
for (i=0;i<total;i++) {
nam[i] = "sdfg"+i;
this.attachMovie ("zz",nam[i],i+500);
this[nam[i]]._x = 50;
this[nam[i]]._y = 50+i*30;
this[nam[i]].kkk.text = "Разделов "+kolvo[i];
this[nam[i]].dvig._visible = false;

\\\\\\\\\\\\\Наведение на родителя\\\\\\\\\\\\\\\\\\\\\
this[nam[i]].onRollOver = function () {
this.dvig._visible = true;
this.onEnterFrame = function () {
this.nextFrame();
}
}

\\\\\\\\\\\\\Убирание курсора с родителя\\\\\\\\\\\\\\\\\\\\\
this[nam[i]].onRollOut = function () {
this.onEnterFrame = function () {
this.prevFrame();
if (this._currentframe == 1) {
delete this.onEnterFrame;
this.dvig._visible = false;
}
}
}

\\\\\\\\\\\\\Аттачивание дочерних кнопок\\\\\\\\\\\\\\\\\\\\\
d=0;
for (j=0;j<kolvo[i];j++) {
namm[u] = "lkjl"+u;
this[nam[i]].dvig.attachMovie ("zzz",namm[u],u+100);
this[nam[i]].dvig[namm[u]]._y = d*30;
this[nam[i]].dvig[namm[u]].nomer = u;

\\\\\\\\\\\\\Нажатие на дочернюю кнопку\\\\\\\\\\\\\\\\\\\\\
this[nam[i]].dvig[namm[u]].onPress = function () {
trace (this.nomer);
}
d+=1;
u+=1;
}
}


Вот исходник.

qazwsx
30.05.2008, 11:59
Поиск по форуму тебе поможет. Тут а каждой странице раздела можно найти подобную тему.

olexandr
30.05.2008, 17:19
примерами не пользовался, но для себя вчера сделал хиттест на главное меню и ролловер на нижнее...

вот пример

Orgy
30.05.2008, 19:06
Спасибо!:drinks:
Сейчас поковыряюсь в исходнике:)

Orgy
01.06.2008, 00:24
Круто! hitTest мне очень помог!
Все получилось.
А теперь по сложнее...
Вот у родителя есть детишки. Как сделать, чтоб и у детишек были детишки?
hitTest и onRollOver тут уже не помогут, как я понял

Psycho Tiger
01.06.2008, 10:52
Как сделать, чтоб и у детишек были детишки?

var mc:MovieClip=attachMovie("mc","mc",1);
mc.mc=attachMovie("mc","mc",2);
mc.mc.mc=attachMovie("mc","mc",3);

(не обязательно их обзывать одними именами, это мне удобнее для копипаста :))

Orgy
01.06.2008, 14:58
Аттачить - не проблема.
Проблема в том, чтобы сделать их активными.
Т.е. при наведении на родителя, вылезет его дети. А при наведении на одно дите, уи у него вылезут свои дети.
К родителю я применил hitTest, к его детям onRollOver, а вот как тперь быть с детьми детей? Что к ним можно применить?

Vektor
02.06.2008, 02:45
Примени снова hitTest к детям, а onRollOver нужен для смены иконки мыши, его можно прописать и оставить пустым.
Может каму-то не понравится, но это сработает.

Psycho Tiger
02.06.2008, 11:21
2 Vektor: другого способа фактически и нет. Кроме как оставлять в родителях дырки для детей :)
Хотя есть один, но у меня он никогда не работал. trackAsMenu - в хэлпе сказано, что это позволяет получать детям события мыши параельно с родителями. Если получиться его приручить - пожалуйста, дай знать.