swapChildrenAt, setChildIndex, swapChildren - все дублирующие MC - PullRequest
2 голосов
/ 18 февраля 2011

здесь первый постер.

Эта проблема воспроизводится на моем компьютере с помощью нового проекта .fla в Actionscript 3.0 в Flash Professional CS5. Это редактирование моего оригинального вопроса с дополнительной информацией.

Я работаю над проектом для загрузки внешних SWF-файлов и поиска по именам экземпляров по соответствующим ключевым словам, а именно «перетаскиванию» и «отбрасыванию», чтобы определить совпадения фрагмента ролика, затем присоединяю прослушиватели событий к этим MC, которые содержат прослушиватели событий D & D и код.

Конкретной проблемой является переключение глубины для видеороликов, вложенных в динамически загружаемые внешние SWF-файлы.

Где у меня проблемы, это конкретные команды:

swapChildrenAt, setChildIndex, swapChildren, removeChild / addChild. Я пробовал все четыре с той же проблемой дублирования. Позвольте мне объяснить.

При нажатии на перетаскиваемый MC он перемещается в верхний индекс динамически загруженного SWF-файла, поэтому он виден над всем остальным в этом SWF-файле. Проблема в том, что попытка любой из этих команд дублирует MC. Что происходит, это:

Событие MOUSE_DOWN запускается: Индекс целевой MC записывается как «2», индекс, на который мы переключимся, - «20» (максимальный индекс SWF). setChildIndex вызывается у целевого родителя MC: mc.parent.setChildIndex (mc, (mc.parent.numChildren-1)) MC переходит к индексу 20, затем создается другой экземпляр MC на уровне, в котором он был расположен ранее (индекс 2)

Этот дубликат был подтвержден с помощью прослушивателя EVENT.ADDED_TO_STAGE, прикрепленного к сцене, чтобы перехватить каждый объект типов MovieClip, добавленный на сцену. Я проверил SWF, чтобы убедиться, что нет дубликатов MovieClips, следы также подтверждают это.

В Интернете есть похожие посты, в которых упоминается та же проблема без решений.

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

http://www.kirupa.com/forum/showthread.php?t=359452 http://board.flashkit.com/board/showthread.php?t=775200 http://forums.adobe.com/thread/199983

В качестве последнего замечания, если я закомментирую оператор подстановки индекса, код прекрасно работает, когда MC просто остается на своем нижнем z-индексе, а не на вершине. К сожалению, это не будет работать как решение, так как я не собираю внешние SWF-файлы.

Спасибо и всего наилучшего Cameron

Ответы [ 2 ]

0 голосов
/ 04 апреля 2011

Да!У меня была такая же проблема с «дублирующимися MC».Это особенно беспокоит, когда вам нужно перемещаться между уровнями или «кадрами» на временной шкале.

Все, что я хотел бы сделать, это иметь MC (цель), которую я перетаскиваю, чтобы всегда быть поверх других перетаскиваемых MC.

Одна вещь наверняка вызывает этот код: setChildIndex( target, numChildren - 1 );

О, верните мне, getNextHighestDepth(); !!!

0 голосов
/ 18 февраля 2011

Одним из быстрых способов обхода setChildIndex / swapChildrenAt / etc, если это возможно в вашей среде, было бы удалениеChild и addChild (ваш mc), это гарантирует его наивысшее значение.

Просто предложение. Надеюсь, это поможет.

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