|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Mar 2011
Сообщений: 59
|
Конфликт имен при наследовании мувика другим мувиком
Один мувик наследуется другим, и оба имеют текст филды, добавленный не програмно, а нарисован в IDE. Кроме того эти текст филды имеют одинаковое название (для того что бы наследуемый функционал имел доступ к текст филду в наследнике), вот на это флэш и ругается... Я так понял, что данная реализация не совсем правильная, так что подскажите как бы его правильней реализовать, желательно без отказа от "ручной рисовки".
п.с. Рассматриваю вариант композиции, но по-моему, это вообще изврат... |
|
|||||
Регистрация: Mar 2011
Сообщений: 59
|
2 samana
у меня оба мувика нарисованы вручную и лежат в библиотеке, так что наследник ничего не получит, даже если будет пустым... Я так понимаю, что наличие его в библиотеке предполагает свое "изображение", которое перезаписывает наследуемое.
п.с. Я тут так подумал, что лучше обращаться к текст филдам не по имени, а по ссылке, которую давать в конструкторе в зависимости от класса(мувика). А имя дать текст филдам разные. Что скажете? |
|
|||||
.
|
А что вы подразумеваете над понятием "имя" или "название" мувика? Мне сразу приходит в голову только DispalyObject#name. Я вас уверяю, что это свойство не может быть уникальным. Может быть сколь угодно много объектов-детей с одним и тем же "именем" у заданного контейнера. Не знаю какого дитя среди прочих с одинаковым названием предпочтет вернуть метод DispalyObjectContainer#getChildByName(), но скорее всего это будет один и тот же объект.
Последний раз редактировалось dimarik; 10.11.2014 в 22:48. |
|
|||||
Регистрация: Mar 2011
Сообщений: 59
|
2 dimarik:
Цитата:
2 КорДум: на сколько я понял, мувика не будет видно на сцене во время "разработки", а в этом-то и вся запара с рисованием вручную... так бы я давно все динамично (программно) нарисовал. Но вероятней всего буду использовать все-же "композицию", точнее вложу один мувиклип во второй, потому как "внезапно" вспомнил, что у меня почти все методы статичные, а значит не наследуются через экстенд, так что только композиция... 2 dimarik: Цитата:
|
|
|||||
у вас, вероятно, стоит галочка "Автоматически объявлять экземпляры в рабочей области" в настройках AS.
соотв. и в супеер и мувике наследнике объявляются одноименные паблик свойства, которые и приводят к конфликту. снимите галку и попробуйте. но надо иметь ввиду, что теперь надо ручками получить сслки на инстансываших текстовых полей..например через getChildByName
__________________
http://cleptoman.free-lance.ru achivements: дважды благословлен на воровство. осеяный благодатью |
|
|||||
ну да, пытаясь создать в наследнике уже объявленное в родительском классе свойство, IDE неизбежно попадает на конфликт
как вариант общий функционал завязать не на сам текстфилд, а на геттер(его-то можно спокойно переписать в наследнике), и в этом геттере в каждом классе подсовывать свой текстфилд |
|
|||||
>> Я тут так подумал, что лучше обращаться к текст филдам не по имени, а по ссылке, которую давать в конструкторе в зависимости от класса(мувика). А имя дать текст филдам разные.
дада, тоже можно, но доступ к свойству будет только после выполнения конструктора наследника т.е. либо в суперконструкторе не должно быть этого общего функционала, либо в нем самом надо определять класс экземпляра и давать соответствующую ссылку типа public class ClassA extends Sprite { public var tf:TextField; public function ClassA() { switch(getQualifiedClassName(this)) { case "ClassA":tf = getChildByName("tf_A") as TextField; break; case "ClassB":tf = getChildByName("tf_B")as TextField; break; default: throw("неучтенный наследник"); } tf.text = this + " y=" + y; } } |
Часовой пояс GMT +4, время: 17:51. |
|
« Предыдущая тема | Следующая тема » |
|
|