Обнаружение, когда объект добавляется в видеоклип - PullRequest
1 голос
/ 12 апреля 2011

Хорошо, поэтому я пытаюсь выяснить, когда дочерний элемент добавляется в мувиклип "x", и обрабатывать / обходить эту операцию из этого мувиклипа "x".

Я попытался переопределить addChildaddChildAt в без преобладания.Видеоклипы, помещенные на сцену с помощью флэш-памяти, по-прежнему не вызывают addChild или addChildAt.Однако при трассировке this.numChildren правильно отображается «2».

Любые подсказки?

Ответы [ 2 ]

2 голосов
/ 12 апреля 2011

Вы можете добавить прослушиватель событий для «добавленного» события для фрагмента ролика x.

x.addEventListener(Event.ADDED, addHandler);

function addHandler(e:Event){
 // your code here
}

Эта ссылка может объяснить это лучше: AS3.0 - Event.ADDED и Event.ADDED_TO_STAGE

Документация также является хорошим ресурсом: flash.events.Event

1 голос
/ 12 апреля 2011

Вы можете переопределить методы мувиклипа по умолчанию, выполнив следующие действия:

Создайте класс для расширения мувиклипа:

package  {
    import flash.display.*;

    public class SuperMovieClip extends MovieClip {

        public function SuperMovieClip() {
            // constructor code
            super();
        }

        override public function addChild(child:DisplayObject):DisplayObject {
            trace("Hello, I am overriding add child");
                    // still perform the default behavior but you can do what ever you want. 
            return super.addChild(child);                       
        }

    }

}

Затем во Flash создайте новый мувиклип и выполните командуубедитесь, что он помечен как Включить для ActionScript.Класс должен быть любым именем, которое вы хотите, но базовым классом должен быть SuperMovieClip (или имя, которое вы выбрали для расширенного класса). См. Изображение:

enter image description here

Теперь, когда любой этапклип создается из этого базового типа (независимо от того, находится ли он в IDE или через код), он будет иметь тип SuperMovieClip, и каждый раз, когда вызывается addChild, он переопределяет исходную функцию.

Например, я поместил экземпляр этого mc из библиотеки на сцену во время разработки и скомпилировал его, используя следующий код на временной шкале:

import flash.display.Sprite;

stage_mc.addChild(new Sprite());

И он вывел Hello, I am overriding add child

...