![]() |
Подключить объекты на один класс или снова проблема обращения
Можно ли кучу объектов расположенных на сцене подцепить на один класс?
Смысл таков: -в Flash-е есть сцена с картой (у которой свой класс, подключенные через св-ва объекта) -карта разделена на полсотни участков, у каждого своё имя (имена есть в массиве), но без подключенных классов -внутри каждого из участков есть объекты и я к ним не могу достучаться, у них тоже нет своих классов Во всяком случае, не хочет теперь: Код AS3:
Даже это не работает: Код AS3:
Добавлено через 2 часа 3 минуты Вообще не догоняю ситуацию. В основном коде пишу: Код AS3:
Код AS3:
ТАК! Заменил все имена типа w001, w002, w003 на одно: hilight. Но это не принципиально. Написал: Код AS3:
|
Так а что непонятно то? Все же рассказано в сообщениях об ошибках?
getChildByName(someStr) возвращает тип DisplayObject. У него нет свойства numChildren. Это свойство есть только у типа DisplayObjectContainer. Несмотря на то, что в конкретной ситуации у Вас это МувиКлип (который так же является и Контейнером), метод возвращает супертип DisplayObject, у которого нельзя спросить свойство numChildren. Делайте кастинг: Код AS3:
Цитата:
|
Так откуда там взялся DisplayObjectContainer? Я ж везде указывал MovieClip?
Код AS3:
|
Код AS3:
|
MovieClip является наследником DisplayObjectContainer точно так же, как Ваш MyMap является МувиКлипом (extends MovieClip).
DisplayObjectContainer в свою очередь является наследником DisplayObject. Расширяет его функционал, позволяя добавлять "в себя" другие DisplayObject, именуемые children. Поэтому у него есть свойство "количество детей" — numChildren, а у его суперкласса DisplayObject не может быть детей и соответственно этого свойства тоже нет. Почитайте книжки или хелп. Пересказывать такие базовые вещи в рамках форума долго и не эффективно. |
Код AS3:
А as MovieClip или MovieClip(...), выходит, расширяет функционал объекта. Да,в башке уложить кто и в каком виде что возвращает, не так-то просто. Особенно, если делаешь работку раз в год для своих, местечковую. |
Цитата:
Цепочка наследования всегда представлена в описании класса в Хелпе (например MovieClip › Sprite › DisplayObjectContainer › InteractiveObject › DisplayObject › EventDispatcher › Object). Цитата:
Да, оно возвращает ссылку на клип. Куда же еще. Просто гарантирует, что Тип данных при этом — DisplayObject. Потому что "детьми" не могут быть объекты, не имеющие в своей цепочке наследования DisplayObject. Могут быть детьми объекты классов-наследников. Но метод не может возвращать какой-то из их типов, это слишком конкретно. Если он будет возвращать Спрайт например, то как быть с ТекстФилдами? Вас ведь не смущает, что метод addChild() принимает только DisplayObject, а Вы ни разу в жизни не создавали никаких DisplayObject-ов, и не задумываясь передаете в addChild() спрайты, мувиКлипы и текстфилды, и даже шейпы. |
Это уж точно, надо разобраться.
|
| Часовой пояс GMT +4, время: 02:44. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.