Ссылка из DocumentClass мувиклипа, созданного экземпляром другого класса

У меня есть этот основной (класс документа) в проекте Flash:

package  {
    import flash.display.MovieClip;
    import flash.events.Event;
    public class main extends MovieClip {

        public function main() {
            var other=new Other(this);
        }
    }   
}

Это другой класс:

    package  {
        import flash.display.MovieClip;
        import Clippo;

        public class Other extends MovieClip {
            //
            public function Other(ref) {
                //
                var clippo = new Clippo();
                clippo.name="clippo";
                clippo.x=100;
                clippo.y=100;
                //1
                //ref.addChild(clippo);
                //2
                addChild(clippo);
            }
        }
}

Теперь: если я передам ссылку (ref) основного класса на Other и добавлю clippo, как вы можете видеть в первом случае, я могу сослаться на отсечение movieclip из main (getChildAt(0) это "клиппо" от основного). Но есть ли способ использовать второй метод (без ссылки) и сделать то же самое из основного класса? Я могу видеть clippo на сцене, когда Other создает его, но я не могу понять, где clippo"живет" в DisplayList.

2 ответа

Решение

Я не совсем уверен, что вы пытаетесь достичь, но:

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

    public function main()
    {
        var other:Other = new Other(this);
        addChild(other);
    }
    
  2. Ты можешь использовать root вместо передачи ссылки на класс документа. (Как только он в списке отображения).

    root.addChild(clippo);
    

    Но имеет смысл добавить его в Other: addChild(clippo)

  3. Где вы создаете DisplayObjects не влияет на список отображения, только вызов addChild делает. призвание addChild в классе документа, и root.addChild Другой результат в том же списке отображения.

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

Создайте некоторые правила, которым вы следуете, чтобы облегчить себе жизнь, например; Не позволяйте дочернему элементу добавлять детей к родителям.

Я думаю, что лучший способ получить ссылку на ваш Clippo DisplayObject - это предоставить для него метод получения.

public function get clippo():Clippo
{
    return this.clippo;
}
Другие вопросы по тегам