Flash AS3 Распространение событий - PullRequest
0 голосов
/ 22 июня 2011

Интересно, можете ли вы помочь с чем-то, что, на мой взгляд, относительно просто - но удивительно разочаровывает!

У меня есть список видеоклипов, каждый из которых содержит кнопку с именем экземпляра Mbtn.Я хотел бы, чтобы кнопка появлялась только тогда, когда мышь наводится на родительский клип.Структура в основном представляет собой родительский клип с именем pcs, 5 дочерних клипов (названных ниже), каждый из которых содержит кнопку с именем экземпляра mBtn.вот мой код -

hr_pc.mBtn.visible=false;
m_pc.mBtn.visible=false;
me_pc.mBtn.visible=false;
d_pc.mBtn.visible=false;
di_pc.mBtn.visible=false;




pcs.addEventListener(MouseEvent.ROLL_OVER, mOver);
pcs.addEventListener(MouseEvent.ROLL_OUT, mOut);

function mOver(evt:MouseEvent):void
{
var overNow = evt.currentTarget.name;
overNow.mBtn.visible=true;


}
function mOut(evt:MouseEvent):void
{
var overNot = evt.currentTarget.name;
overNot.mBtn.visible=false;
} 

Я уверен, что есть гораздо лучший способ сделать это - любые предложения с благодарностью приняты!

Спасибо, Пол

1 Ответ

1 голос
/ 22 июня 2011
evt.currentTarget.name

означает, что прямо сейчас вы нацеливаетесь на свой контейнерный объект (pcs), а не на его содержимое (hr_pc, m_pc и т. Д.). В этом ключевое отличие между evt.target и evt.currentTarget. Если вы проследите имя currentTarget, оно будет идентичным для каждой намеченной цели. Так что, чтобы исправить, вы, безусловно, можете сделать эту работу с

evt.target.name

Однако у вас могут возникнуть проблемы, если вы наведите курсор мыши на кнопку, поскольку цель больше не будет непосредственным родителем кнопок (это будет сама кнопка), и кнопка, вероятно, снова вызовет visible=false. 1010 *

Вероятно, я бы пошёл в другом направлении: напишите класс, содержащий кнопку и собственных слушателей. Это был бы хороший план, если есть много общего поведения (но в зависимости от ваших потребностей, может не быть).

Итак, да, прочитайте currentTarget vs target

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...