Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.11.2014, 17:34
MyDuty вне форума Посмотреть профиль Отправить личное сообщение для MyDuty Найти все сообщения от MyDuty
  № 1  
Ответить с цитированием
MyDuty
 
Аватар для MyDuty

Регистрация: Mar 2011
Сообщений: 59
Question Конфликт имен при наследовании мувика другим мувиком

Один мувик наследуется другим, и оба имеют текст филды, добавленный не програмно, а нарисован в IDE. Кроме того эти текст филды имеют одинаковое название (для того что бы наследуемый функционал имел доступ к текст филду в наследнике), вот на это флэш и ругается... Я так понял, что данная реализация не совсем правильная, так что подскажите как бы его правильней реализовать, желательно без отказа от "ручной рисовки".
п.с. Рассматриваю вариант композиции, но по-моему, это вообще изврат...

Старый 10.11.2014, 21:10
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 2  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
По-идее вам не нужно рисовать (вручную) в наследуемом классе текстовое поле, так как оно и так в нём создастся.

Старый 10.11.2014, 21:39
MyDuty вне форума Посмотреть профиль Отправить личное сообщение для MyDuty Найти все сообщения от MyDuty
  № 3  
Ответить с цитированием
MyDuty
 
Аватар для MyDuty

Регистрация: Mar 2011
Сообщений: 59
По умолчанию 2 samana

у меня оба мувика нарисованы вручную и лежат в библиотеке, так что наследник ничего не получит, даже если будет пустым... Я так понимаю, что наличие его в библиотеке предполагает свое "изображение", которое перезаписывает наследуемое.

п.с. Я тут так подумал, что лучше обращаться к текст филдам не по имени, а по ссылке, которую давать в конструкторе в зависимости от класса(мувика). А имя дать текст филдам разные. Что скажете?

Старый 10.11.2014, 22:38
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 4  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
А что вы подразумеваете над понятием "имя" или "название" мувика? Мне сразу приходит в голову только DispalyObject#name. Я вас уверяю, что это свойство не может быть уникальным. Может быть сколь угодно много объектов-детей с одним и тем же "именем" у заданного контейнера. Не знаю какого дитя среди прочих с одинаковым названием предпочтет вернуть метод DispalyObjectContainer#getChildByName(), но скорее всего это будет один и тот же объект.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.


Последний раз редактировалось dimarik; 10.11.2014 в 22:48.
Старый 10.11.2014, 22:41
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 5  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Воспользуйтесь композицией. То есть классы с наследниками так и остаются, только вот они не прилинкованы к мувиклипу во FlashIDE, а используют создаваемый мувиклип в себе через обычную ссылку-свойство, которая как раз и будет наследоваться.
__________________
тут я

Старый 10.11.2014, 22:51
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 6  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Вот чисто для моего любопытства, можете ли вы дать swf с минимальным примером? Немного не понимаю в чем у вас проблема.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 10.11.2014, 23:14
MyDuty вне форума Посмотреть профиль Отправить личное сообщение для MyDuty Найти все сообщения от MyDuty
  № 7  
Ответить с цитированием
MyDuty
 
Аватар для MyDuty

Регистрация: Mar 2011
Сообщений: 59
2 dimarik:
Цитата:
А что вы подразумеваете над понятием "имя" или "название" мувика?
под именем (и названием) я имел в виду имя экземпляра, которое дается в IDE, так как он там же и нарисован...

2 КорДум:
на сколько я понял, мувика не будет видно на сцене во время "разработки", а в этом-то и вся запара с рисованием вручную... так бы я давно все динамично (программно) нарисовал. Но вероятней всего буду использовать все-же "композицию", точнее вложу один мувиклип во второй, потому как "внезапно" вспомнил, что у меня почти все методы статичные, а значит не наследуются через экстенд, так что только композиция...

2 dimarik:
Цитата:
Вот чисто для моего любопытства, можете ли вы дать swf с минимальным примером?
да там и давать то нечего, просто в библиотеке Мувик(как клас), в котором текст филд которому дано имя(см. выше), и другой Мувик - копия предыдущего только в нем потом дорисовано кое-что. В библиотеке они прилинкованы с классами, где и происходит наследование...

Старый 10.11.2014, 23:31
cleptoman вне форума Посмотреть профиль Отправить личное сообщение для cleptoman Найти все сообщения от cleptoman
  № 8  
Ответить с цитированием
cleptoman
 
Аватар для cleptoman

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
у вас, вероятно, стоит галочка "Автоматически объявлять экземпляры в рабочей области" в настройках AS.
соотв. и в супеер и мувике наследнике объявляются одноименные паблик свойства, которые и приводят к конфликту. снимите галку и попробуйте. но надо иметь ввиду, что теперь надо ручками получить сслки на инстансываших текстовых полей..например через getChildByName
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью

Старый 11.11.2014, 00:30
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 9  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
ну да, пытаясь создать в наследнике уже объявленное в родительском классе свойство, IDE неизбежно попадает на конфликт
как вариант общий функционал завязать не на сам текстфилд, а на геттер(его-то можно спокойно переписать в наследнике), и в этом геттере в каждом классе подсовывать свой текстфилд
Вложения
Тип файла: zip test.zip (6.8 Кб, 43 просмотров)

Старый 11.11.2014, 10:46
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 10  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
>> Я тут так подумал, что лучше обращаться к текст филдам не по имени, а по ссылке, которую давать в конструкторе в зависимости от класса(мувика). А имя дать текст филдам разные.

дада, тоже можно, но доступ к свойству будет только после выполнения конструктора наследника
т.е. либо в суперконструкторе не должно быть этого общего функционала, либо в нем самом надо определять класс экземпляра и давать соответствующую ссылку
типа
Код AS3:
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, время: 16:14.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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