PDA

Просмотр полной версии : кнопка в кнопке - отслеживание нажатий


Zhihar
26.07.2009, 23:26
Приветствую
У меня есть MovieClip на котором висит код на нажатие мышкой

mcMyMovieClip.onPress = function(){}

внутри него есть еще один MovieClip со своим кодом на нажатие

mcMySubMovieClip.onPress = function(){}

когда я нажимаю на это подролик выполняется код для ролика
а хотелось бы чтобы все работало как надо - т.е. если нажимаю на подролик - выполняется код подролика, если на остальную область ролика - то код ролика

mooncar
27.07.2009, 00:01
hitTest используй две проверки, потому что кнопка в кнопке (мувики с поведением кнопки) не будут работать независимо, всегда будет отрабатываться только одна.
При проверке щелчка по родителю нужно условие поставить, когда смотрим его hitTest с мышью, что если если мышь в тот момент и на дочернем мувике, то условие для родительского не должно выполняться. Проверку выполняй по событию onMouseDown любого мувика сцены.

Допустим, mcMySubMovieClip находится внутри родительского mcMyMovieClip, тогда в кадре нужно написать:
this.onMouseDown = function () {
if (mcMyMovieClip.hitTest(_root._xmouse, _root._ymouse)) { //если попадаем в область родителя
if (!mcMyMovieClip.mcMySubMovieClip.hitTest(_root._xmouse, _root._ymouse)) { //и не попадаем в дочерний
trace("Нажатие на мувик mcMyMovieClip");
}
else { //иначе, если попадая и в родительский, попадаем и в дочерний
trace("Нажатие на мувик mcMySubMovieClip");
}
}
};

Правда при этом курсор в пальчик не будет превращаться :)

udaaff
27.07.2009, 00:41
Есть еще вариант: не вкладывать одну кнопку в другую, а разместить вторую над первой. Если нужно их сгруппировать, то можно положить обе в один контейнер.