события во вложенных мувиклипах внутри экземпляра, размещенного на временной шкале, никогда не отправляются - PullRequest
0 голосов
/ 30 декабря 2011

Я - разработчик кода AS3, но на этот раз мне нужно иметь дело с FLA, который имеет экземпляр на временной шкале со сложным вложением фрагментов ролика и текстовых полей (которые называются через поле экземпляра во Flash). Проблема в том, что события (я поместил в Documentclass) на вложенные мувиклипы внутри этого экземпляра, размещенного на временной шкале, никогда не отправляются.

пример кода:

// my instance on Stage in all Frames of the timeline
public var thewall:MovieClip;

// event directly on thewall works 
// the event is dispatched correctly
thewall.addEventListener(MouseEvent.CLICK,click);


// event on nested MovieClip userSharePost fails 
// the event is not dispatched
thewall.userSharePost.addEventListener(MouseEvent.CLICK,click);


// event on nested TextField field1 fails as well
// the event is not dispatched
thewall.userSharePost.field1.addEventListener(TextEvent.LINK, linkCpechEvent);

Как мне получить к ним доступ для отправки событий?

Большое спасибо заранее, Деннис

Ответы [ 2 ]

0 голосов
/ 30 декабря 2011

Вы можете поместить один прослушиватель событий «onClick» в родительский мувиклип, и обработчик проверит событие currentTarget. Проблема с тем, как вам нужно прослушивать события, заключается в том, что, как только вы назначаете слушателя onClick для мувиклипа «thewall», он как бы «блокирует» события на его дочерних элементах - даже если вы все еще можете видеть исходный источник событие в currentTarget.

В моем опыте рекомендуется использовать один прослушиватель, который проверяет источник события, или, вместо того, чтобы вместо «onClick» на экземпляре «thewall», иметь дополнительный прозрачный мувиклип на нижнем слое . внутри «thewall» и прикрепите к нему событие click - таким образом, все мувиклипы над ним будут запускать свои собственные соответствующие события, а щелчок по телу клипа контейнера будет запускаться сам по себе.

0 голосов
/ 30 декабря 2011

Обычно вы не добавляете обработчики событий к вложенным мувиклипам в основной (рабочей) временной шкале. По сути, мувиклип - это класс, а все вложенные мувиклипы - это свойства этого класса. Таким образом, по логике ООП, все мувиклипы внутри мувиклипа должны вести себя одинаково при нажатии. Это означает, что вы добавляете прослушиватели событий во вложенные мувиклипы на стадии родительского мувиклипа (если вы понимаете, о чем я).

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