Добавить или не добавить ребенка? со вспышкой - PullRequest
0 голосов
/ 12 июля 2010

Я столкнулся с ситуацией, в которой у меня проблемы с пониманием ...

Я пишу небольшую игру Drag and Drop, которая поставляется с собственным решением. Игра начинается на кадре 1, решение кадра 150.

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

В части "игры" я позаботился о том, чтобы все перетаскиваемые элементы возвращались на сцену, чтобы они не проходили позади других перетаскиваемых объектов. Поэтому в конце функции перетаскивания я добавил строку «this.parent.parent.addChild (this.parent)».

Когда я озадачен, когда я нажимаю кнопку решения, все перетаскиваемые экземпляры остаются на месте и больше не реагируют на действия временной шкалы. Если я уберу бит «this.parent.parent.addChild (this.parent)», все будет работать нормально (за исключением возможности перетаскивания за другим объектом)

Может кто-нибудь объяснить мне это поведение?

ТИА


Хм ... Полагаю, я говорил слишком рано!

Мой сценарий выглядит следующим образом: Я поместил 5 экземпляров выбора MC на первом уровне на моей сцене. choice MC содержит экземпляр dragButton MC (, сопоставленный с его собственным классом ) и экземпляр choiceText MC, выглядящий следующим образом:


[dragButton] choiceText


Цель состоит в том, чтобы пользователь перетащил dragButton MC поверх определенного экземпляра choiceGroup MC .

Чтобы гарантировать, что любой перетаскиваемый объект пересекает любой другой, я добавил

this.parent.parent.addChild(this.parent);

в конце функции перетаскивания dragButton. Это дает эффект повторного добавления выбор MC, содержащий выбранный dragButton .

После дальнейшего тестирования я понял, что объекты добавляются в нужный «контейнер», НО перестают «привязываться» к настройкам временной шкалы.

Это происходит в области «коррекции», где я исчезаю с выбора , а затем исчезаю в другом экземпляре в назначенном месте. Однако «исчезновение» (Classic Tween) не захватывает MC, которые были повторно добавлены на сцену.

Есть ли обходной путь для того, чтобы не использовать код «затухание / затухание» вместо использования анимации на временной шкале?

ТИА

1 Ответ

1 голос
/ 12 июля 2010

Похоже, вы добавляете свои перетаскиваемые экземпляры не к тому родителю.В ActionScript вы можете взять любой объект и переназначить его любому родителю.Итак, вам нужно будет определить, к какому родительскому объекту он действительно должен быть присоединен.

Если вы добавите дочерний MC (MovieClip) к другому родительскому MC, который визуально находится ниже других родительских клипов, то он тоже будетниже других родительских клипов.Будучи внутренним компонентом нового родительского MC, он наследует z-индекс родителя, независимо от того, где находится этот родительский элемент.

Я бы порекомендовал проверить команду «insert target path» в палитре действий.

Это позволяет вам перейти к клипу, который вы хотите повторно прикрепить от одного родителя к другому, и затем посмотреть, какой путь он рекомендует.

Вы можете быть удивлены тем, какие пути на самом деле являютсяот одного MC (MovieClip) к другому ...

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

Я не уверен, как вы делаете вещи в своей игре, так что это всего лишь догадки ...

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