Получить root DisplayObject’a из любого класса

Ранее, как только я начал изучать ActionScript3, у меня возникла проблема с получениям ссылки на главный DisplayObject и доступа к его параметрам. Где-то, на просторах Интернета, я нашел статью как можно решить сию проблему, но способ этот, на мой взгляд довольно громоздкий. Решение заключалось в том чтобы каждому классу, где будет необходима ссылка на DisplayObject, передавать её как аргумента конструктора данного класса.

пример

  1. package{
  2.  
  3. public class Example {
  4.  
  5. public function Example(){
  6.  
  7. var getRoot:GetRoot = GetRoot(this.root);
  8.  
  9. }
  10.  
  11. }
  12.  
  13. }

GetRoot(); - класс которому необходимо передать ссылку на DisplayObject. Как видите имея дела с подобной конструкцией легко запутаться, особенно если есть много вложенных и наследуемых классов, что появляются в серьезных приложениях и программах.

Но слава богу есть более удобное решение данной проблемы: Использовать свой класс с статистическими переменными (static var).

А именно создать отдельный класс который будет наследовать, например Object, и содержать эти переменные. Далее в процессе работы, мы просто импортируем этот класс в нужном месте и у нас появляется ссылка на DisplayObject:

пример:

  1. package{
  2.  
  3. public class rObj extends Object{
  4.  
  5. public static var rRoot;// будущая статичная ссылка на <strong>DisplayObject</strong>
  6.  
  7. public static var rExample;//будущая пустая статичная ссылка для чего нибудь, просто пример
  8.  
  9. public function rObj{}
  10.  
  11. }
  12.  
  13. }
  14.  
  15. //===============================
  16.  
  17. //Главный класс программы
  18.  
  19. package{
  20.  
  21. import flash.display.Sprite;
  22.  
  23. import rObj;//импортируем rObj класс
  24.  
  25. public class Example extends Sprite{
  26.  
  27. public function Example{
  28.  
  29. rObj.rRoot = this.root;//Назначаем rRoot ссылкой на <strong>root</strong> <strong>DisplayObject'a</strong>
  30.  
  31. rObj.rExample = 'some static var for example';//Назначаем rExample строку, просто для примера
  32.  
  33. }
  34.  
  35. }
  36.  
  37. }

Теперь можно импортировать класс rObj в любой другой класс и с помощью rObj.rRoot получать нашу ссылку на this.root.

Вобще статистические переменные очень удобная вещь, ёе можно использовать для передачи ссылок на объекты, функции, другие классы, да как вам угодно.

Надеюсь это статья вам поможет.

Далее я опишу удобный способ инициализации классов, но это будет в следующей статье.

Продолжение следует…

You can leave a response, or trackback from your own site.
(Еще не оценили)
Загрузка ... Загрузка ...

5 Responses to “Получить root DisplayObject’a из любого класса”

  1. k0t0vich пишет:

    1) не надо наследовать от обжекта
    2)лучше в документКлассе сделать статический геттер который будет возврашать рут
    3) лучше так вообще не делать если будет не одна свф

  2. сергей пишет:

    блин, а нельзя понятнее? куда его совать этот класс?

  3. Merlin пишет:

    совать никуда не надо, просто делаете import rObj; и дальше в любой части класса обращаетесь к любым public переменным класса rObj

  4. KIVagant пишет:

    Интересно, я вообще изначально именно так и придумал. Поскольку в обрез времени изучать AS3, я не заморачивался изучением правильного доступа к stage или root и просто завел класс, который назвал Global, в нем храню все глобальные методы, свойства, в том числе Global.stage и Global.root.

  5. OZON пишет:

    а не проще сделать так
    var getRoot:Object=MovieClip(root);

Leave a Reply

Powered by WordPress | Visit BestInCellPhones.com for Free Verizon Cell Phones | Thanks to iCellPhoneDeals.com, MMORPG Games and Conveyancing