![]() |
|
||||||||||
|
|||||
|
Регистрация: Jul 2007
Сообщений: 46
|
Вот, к примеру, я хочу реализовать возможность перемещать/изменять размеры динамически добавляемых объектов (например, TextArea и Button) на экране.
Я пишу классы MyTextArea и MyButton которые наследуют соответственно TextArea и Button, и в них реализую одинаковые методы Move и Resize. Это мне вроде понятно. А вот как сделать что б вынести функции Move и Resize в отдельный класс, например, класс BaseObject, который наследует Sprite (?). И далее использовать его и для MyTextArea (вместе с классом TextArea) и для MyButton (вместе с Button). Как я понял из того что читал, это множественное наследие, которое и не рекомендуется и не поддерживается as3. Читая дальше я дошел до интерфейсов, но в них идет только перечисление методов, которые все равно же придется реализовывать в каждом классе отдельно. Я подхожу к задаче принципиально не правильно? Как это реализовать? |
|
|||||
|
Перечитайте всё заново... TextArea и Button имеют общие классы лишь в начале иерархии наследования(Object -> EventDispatcher -> ... ), но в итоге это абсолютно разные направления наследования. У них есть несколько общих свойств и методов, наследуемый от общих классов, но с того момента как ихняя линия наследования расходится, расходятся и ихние свойства с методами, и там уже надо рассматривать каждый класс по отдельности...
|
|
|||||
|
Регистрация: Jul 2007
Сообщений: 46
|
Так я и хочу им добавить еще два одинаковых метода которые будут работать с ихними общими width, height, x, y.
Или так нельзя и можно добавить эти методы только в каждый класс по отдельности? |
|
|||||
|
в принципе можно, если изначально класс определялся как dynamic. Но тут главное правильно сформулировать задачу и определить рациональное решение, а то что вы сейчас предлагаете, мягко говоря не подходит. Такие вопросы обычно решаются созданием супер класса, но так как TextField и Button не имеют общего супер класса, то этот вариант тут отпадает... вам надо пересмотреть задачи.... ну и разобраться побольше в ООП и классах AS3
|
|
|||||
|
Регистрация: Jul 2007
Сообщений: 46
|
Дано:
n динамически отображаемых объектов произвольного типа. Задача: Реализовать метод Move, который будет перемещать любой объект по экрану. Так что б разобратся в ООП и классах надо больше писать, а что б писать больше и к тому же правильно - надо больше разбиратся) То есть на данный момент я могу реализовать эту задачу так как я написал в первом посте. Но у меня таких перемещаемых объектов может быть десяток разного типа (TextArea, Button, TextInput и т.д.). Но меня интересует как это реализовать правильно и оптимально. На мой взгляд, нецелесообразно расширять каждый из этих классов ради одного метода Move, к тому же одинакового для всех. |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Напишите отдельно класс контейнера с методом move() и используйте его совместно с TextArea, Button и т.д. Т.е. если вам, допустим, нужно сделать перетаскиваемое текстовое поле, создаете контейнер, добавляете в качестве контента туда TextArea. Не логично, на мой взгляд, к этим классом этот метод добавлять.
|
|
|||||
|
нет... всё не так... вам просто надо понять смысл наследования, смысл контейнера объектов, смысл работы с предками.... и у вас всё получится. Не хватайтесь за небеса, начните с малого, создайте пару объектов в одном контейнере, разберитесь в руководстве от адобе(оно же на русском). Контейнером может быть и спрайт, и мувиклип. Контейнер определяет наследование от DisplayObject. Пару месяцев назад был сам такой же... не так уж всё и сложно.
|
|
|||||
|
Регистрация: Jul 2007
Сообщений: 46
|
Спасибо большое, насчет контейнера понял!
|
|
|||||
|
Если просто перемещать - можно сделать как в разных твинерах - статикой с передачей параметра.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Регистрация: Jul 2007
Сообщений: 46
|
2 Psycho Tiger:
Ну перемещать - это я упростил задачу, там еще куча методов должна быть. |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:41. |
|
|
« Предыдущая тема | Следующая тема » |
|
|