Ссылка из 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 ответа
Я не совсем уверен, что вы пытаетесь достичь, но:
Вам нужно добавить
other
в список отображения, если вы хотите увидеть его или его детей.public function main() { var other:Other = new Other(this); addChild(other); }
Ты можешь использовать
root
вместо передачи ссылки на класс документа. (Как только он в списке отображения).root.addChild(clippo);
Но имеет смысл добавить его в Other:
addChild(clippo)
Где вы создаете DisplayObjects не влияет на список отображения, только вызов
addChild
делает. призваниеaddChild
в классе документа, иroot.addChild
Другой результат в том же списке отображения.
Если у вас возникли проблемы такого рода, вам может потребоваться переосмыслить свою архитектуру.
Создайте некоторые правила, которым вы следуете, чтобы облегчить себе жизнь, например; Не позволяйте дочернему элементу добавлять детей к родителям.
Я думаю, что лучший способ получить ссылку на ваш Clippo DisplayObject - это предоставить для него метод получения.
public function get clippo():Clippo
{
return this.clippo;
}