Конфликт имен при наследовании мувика другим мувиком
Один мувик наследуется другим, и оба имеют текст филды, добавленный не програмно, а нарисован в IDE. Кроме того эти текст филды имеют одинаковое название (для того что бы наследуемый функционал имел доступ к текст филду в наследнике), вот на это флэш и ругается... Я так понял, что данная реализация не совсем правильная, так что подскажите как бы его правильней реализовать, желательно без отказа от "ручной рисовки".
п.с. Рассматриваю вариант композиции, но по-моему, это вообще изврат... |
По-идее вам не нужно рисовать (вручную) в наследуемом классе текстовое поле, так как оно и так в нём создастся.
|
2 samana
у меня оба мувика нарисованы вручную и лежат в библиотеке, так что наследник ничего не получит, даже если будет пустым... Я так понимаю, что наличие его в библиотеке предполагает свое "изображение", которое перезаписывает наследуемое.
п.с. Я тут так подумал, что лучше обращаться к текст филдам не по имени, а по ссылке, которую давать в конструкторе в зависимости от класса(мувика). А имя дать текст филдам разные. Что скажете? |
А что вы подразумеваете над понятием "имя" или "название" мувика? Мне сразу приходит в голову только DispalyObject#name. Я вас уверяю, что это свойство не может быть уникальным. Может быть сколь угодно много объектов-детей с одним и тем же "именем" у заданного контейнера. Не знаю какого дитя среди прочих с одинаковым названием предпочтет вернуть метод DispalyObjectContainer#getChildByName(), но скорее всего это будет один и тот же объект.
|
Воспользуйтесь композицией. То есть классы с наследниками так и остаются, только вот они не прилинкованы к мувиклипу во FlashIDE, а используют создаваемый мувиклип в себе через обычную ссылку-свойство, которая как раз и будет наследоваться.
|
Вот чисто для моего любопытства, можете ли вы дать swf с минимальным примером? Немного не понимаю в чем у вас проблема.
|
2 dimarik:
Цитата:
2 КорДум: на сколько я понял, мувика не будет видно на сцене во время "разработки", а в этом-то и вся запара с рисованием вручную... так бы я давно все динамично (программно) нарисовал. Но вероятней всего буду использовать все-же "композицию", точнее вложу один мувиклип во второй, потому как "внезапно" вспомнил, что у меня почти все методы статичные, а значит не наследуются через экстенд, так что только композиция... 2 dimarik: Цитата:
|
у вас, вероятно, стоит галочка "Автоматически объявлять экземпляры в рабочей области" в настройках AS.
соотв. и в супеер и мувике наследнике объявляются одноименные паблик свойства, которые и приводят к конфликту. снимите галку и попробуйте. но надо иметь ввиду, что теперь надо ручками получить сслки на инстансываших текстовых полей..например через getChildByName |
Вложений: 1
ну да, пытаясь создать в наследнике уже объявленное в родительском классе свойство, IDE неизбежно попадает на конфликт
как вариант общий функционал завязать не на сам текстфилд, а на геттер(его-то можно спокойно переписать в наследнике), и в этом геттере в каждом классе подсовывать свой текстфилд |
>> Я тут так подумал, что лучше обращаться к текст филдам не по имени, а по ссылке, которую давать в конструкторе в зависимости от класса(мувика). А имя дать текст филдам разные.
дада, тоже можно, но доступ к свойству будет только после выполнения конструктора наследника т.е. либо в суперконструкторе не должно быть этого общего функционала, либо в нем самом надо определять класс экземпляра и давать соответствующую ссылку типа Код AS3:
|
Часовой пояс GMT +4, время: 12:43. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.