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

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

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

Регистрация: Jul 2007
Сообщений: 46
По умолчанию Наследовать два класса?

Вот, к примеру, я хочу реализовать возможность перемещать/изменять размеры динамически добавляемых объектов (например, TextArea и Button) на экране.
Я пишу классы MyTextArea и MyButton которые наследуют соответственно TextArea и Button, и в них реализую одинаковые методы Move и Resize. Это мне вроде понятно.

А вот как сделать что б вынести функции Move и Resize в отдельный класс, например, класс BaseObject, который наследует Sprite (?). И далее использовать его и для MyTextArea (вместе с классом TextArea) и для MyButton (вместе с Button).

Как я понял из того что читал, это множественное наследие, которое и не рекомендуется и не поддерживается as3. Читая дальше я дошел до интерфейсов, но в них идет только перечисление методов, которые все равно же придется реализовывать в каждом классе отдельно.
Я подхожу к задаче принципиально не правильно? Как это реализовать?

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

Регистрация: Jan 2008
Адрес: Украина, Славутич
Сообщений: 646
Отправить сообщение для willis83 с помощью ICQ
Перечитайте всё заново... TextArea и Button имеют общие классы лишь в начале иерархии наследования(Object -> EventDispatcher -> ... ), но в итоге это абсолютно разные направления наследования. У них есть несколько общих свойств и методов, наследуемый от общих классов, но с того момента как ихняя линия наследования расходится, расходятся и ихние свойства с методами, и там уже надо рассматривать каждый класс по отдельности...

Старый 03.07.2009, 01:17
Adskij вне форума Посмотреть профиль Отправить личное сообщение для Adskij Найти все сообщения от Adskij
  № 3  
Ответить с цитированием
Adskij

Регистрация: Jul 2007
Сообщений: 46
Так я и хочу им добавить еще два одинаковых метода которые будут работать с ихними общими width, height, x, y.
Или так нельзя и можно добавить эти методы только в каждый класс по отдельности?

Старый 03.07.2009, 01:27
willis83 вне форума Посмотреть профиль Отправить личное сообщение для willis83 Найти все сообщения от willis83
  № 4  
Ответить с цитированием
willis83
 
Аватар для willis83

Регистрация: Jan 2008
Адрес: Украина, Славутич
Сообщений: 646
Отправить сообщение для willis83 с помощью ICQ
в принципе можно, если изначально класс определялся как dynamic. Но тут главное правильно сформулировать задачу и определить рациональное решение, а то что вы сейчас предлагаете, мягко говоря не подходит. Такие вопросы обычно решаются созданием супер класса, но так как TextField и Button не имеют общего супер класса, то этот вариант тут отпадает... вам надо пересмотреть задачи.... ну и разобраться побольше в ООП и классах AS3

Старый 03.07.2009, 01:52
Adskij вне форума Посмотреть профиль Отправить личное сообщение для Adskij Найти все сообщения от Adskij
  № 5  
Ответить с цитированием
Adskij

Регистрация: Jul 2007
Сообщений: 46
Дано:
n динамически отображаемых объектов произвольного типа.
Задача:
Реализовать метод Move, который будет перемещать любой объект по экрану.

Так что б разобратся в ООП и классах надо больше писать, а что б писать больше и к тому же правильно - надо больше разбиратся)
То есть на данный момент я могу реализовать эту задачу так как я написал в первом посте. Но у меня таких перемещаемых объектов может быть десяток разного типа (TextArea, Button, TextInput и т.д.). Но меня интересует как это реализовать правильно и оптимально.
На мой взгляд, нецелесообразно расширять каждый из этих классов ради одного метода Move, к тому же одинакового для всех.

Старый 03.07.2009, 02:09
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 6  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Напишите отдельно класс контейнера с методом move() и используйте его совместно с TextArea, Button и т.д. Т.е. если вам, допустим, нужно сделать перетаскиваемое текстовое поле, создаете контейнер, добавляете в качестве контента туда TextArea. Не логично, на мой взгляд, к этим классом этот метод добавлять.

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

Регистрация: Jan 2008
Адрес: Украина, Славутич
Сообщений: 646
Отправить сообщение для willis83 с помощью ICQ
нет... всё не так... вам просто надо понять смысл наследования, смысл контейнера объектов, смысл работы с предками.... и у вас всё получится. Не хватайтесь за небеса, начните с малого, создайте пару объектов в одном контейнере, разберитесь в руководстве от адобе(оно же на русском). Контейнером может быть и спрайт, и мувиклип. Контейнер определяет наследование от DisplayObject. Пару месяцев назад был сам такой же... не так уж всё и сложно.

Старый 03.07.2009, 11:46
Adskij вне форума Посмотреть профиль Отправить личное сообщение для Adskij Найти все сообщения от Adskij
  № 8  
Ответить с цитированием
Adskij

Регистрация: Jul 2007
Сообщений: 46
Спасибо большое, насчет контейнера понял!

Старый 03.07.2009, 12:31
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 9  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
Если просто перемещать - можно сделать как в разных твинерах - статикой с передачей параметра.

Старый 03.07.2009, 16:13
Adskij вне форума Посмотреть профиль Отправить личное сообщение для Adskij Найти все сообщения от Adskij
  № 10  
Ответить с цитированием
Adskij

Регистрация: Jul 2007
Сообщений: 46
2 Psycho Tiger:
Ну перемещать - это я упростил задачу, там еще куча методов должна быть.

Создать новую тему Ответ Часовой пояс GMT +4, время: 00:59.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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