Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Loader class и дочерние обьекты (http://www.flasher.ru/forum/showthread.php?t=111289)

Psycho Tiger 21.04.2008 13:46

Loader class и дочерние обьекты
 
Наткнулся на 2 проблемы.
Первая - это Loader class, с помощью него я гружу картинку извне, после могу сразу добавить на сцену - как и написано в примере хэлпа.
Loader.content - то, что мы загрузили. Теперь внимание - если мы создаем новый класс и передаем туда этот Loader (пусть он у нас, скажем будет ldr):
Код:

new someClass(ldr);
В someClass`e, в конструкторе пишем:
Код:

trace(ldr); //параметр который я принимаю в класс обзовем так же
Выводит: [Loader object] - все шикарно.

Если сделаем:
Код:

trace(ldr.content); //получаем null
Если сделать в главном классе (по привычке ещё пишу в фреймах)
Код:

trace(ldr.content); //выдает то, что мы загружали
Странно, возникает единствення мысль - обьекты не передаются с его дочерними свойствами и обьектами - мысль конечно, полная ересь, что и проверяем:
Код:

new someClass(ldr.content); //в конструкторе оутпут - null
С чем это связано?

И 2 вопрос, наверное более глупый, причем настолько, что не хочется ради него открывать новую тему :)
Код в главном классе:
Код:

var zone:paintArea=new paintArea();
addChild(zone);
zone.addChild(toPaint);

Как из класса paintArea получить ссылку на toPaint?
getChildAt не помогает, оно и понятно - когда выполняется конструктор у нас элементарно toPaint ещё отсутсвует в zone. Конечно, можно добавить toPaint в самом конструкторе, но дело в том, что этих toPaint у меня много - в зависимости от ситуации, выбор - передавать через параметр, ну а это делать как то не хочется. Есть варианты, или таки придеться?

etc 21.04.2008 14:11

Почему имена классов с маленькой буквы начинаются?

1. Загрузка была завершена на момент создания SomeClass?
2. Либо переопределить addChild у zone, либо подписаться на событие ADDED и ADDED_TO_STAGE и смотреть детей.

wvxvw 21.04.2008 15:17

А еще лучше - не передавать ничего в конструктор =) Отдельным методом, потом самому же удобнее будет.

Psycho Tiger 21.04.2008 18:12

Имена с маленькой буквы - привычка. Это ведь не как не влияет на быстродейственность?
2wvxvw : отдельным методом и сделал, но после помучился с z-сортировкой. Если это передать в конструктор, то можно делать addChild имено в той последовательности, в какой тебе нужно.
2__etc : можно поподробней, что ты имеешь ввиду под словом "переопределить", не совсем понял твою мысль. Про события ADDED ты предлагешь подписаться в someClass на добавление, скажем, 3 элемента и после вызывать метод? Ммм, логично)

etc 21.04.2008 18:21

Psycho Tiger, во флешовом фреймворке нет ни одного класса, у которого имя с маленькой буквы начинается, а у вас есть.

Переопределить — override. Т.е. написать свой метод addChild.

Psycho Tiger 21.04.2008 18:25

Оверрайдить addChild - это слишком для начинающего ас3-ера.
В принципе то, если я работаю один - то совершенно без разницы как называется класс. Чтож, учту и постораюсь писать с большой буквы... Хотя в привычку уже вошло - первая буква маленькая, следуйщие слова с большой...

badun 21.04.2008 19:23

вот шаблон, дописывай свой функционал, ничего сложного нет
Код:

                override public function addChild(child:DisplayObject):DisplayObject
                {
                        return super.addChild(child);
                }


Psycho Tiger 22.04.2008 07:56

Ммм, и то верно) Я то подумал что полностью самому addChild etc предлагает написать.

Хорошо, и 2 вопрос - кто знает?
Цитата:

И 2 вопрос, наверное более глупый, причем настолько, что не хочется ради него открывать новую тему
Код в главном классе:
Код:

var zone:paintArea=new paintArea();
addChild(zone);
zone.addChild(toPaint);

Как из класса paintArea получить ссылку на toPaint?
getChildAt не помогает, оно и понятно - когда выполняется конструктор у нас элементарно toPaint ещё отсутсвует в zone. Конечно, можно добавить toPaint в самом конструкторе, но дело в том, что этих toPaint у меня много - в зависимости от ситуации, выбор - передавать через параметр, ну а это делать как то не хочется. Есть варианты, или таки придеться?

etc 22.04.2008 10:08

Написать сеттер toPaint.

Psycho Tiger 22.04.2008 10:58

Хм, а почему не работает в качестве параметра?
Как может не null обьект стать null`oм?


Часовой пояс GMT +4, время: 05:53.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.