Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   наследование vs экземпляр класса (http://www.flasher.ru/forum/showthread.php?t=142908)

AlexDesinger 03.08.2010 02:03

наследование vs экземпляр класса
 
Всем привет, пытаюсь упорядочить несколько классов и файлов, так чтобы не писать по несколько раз один и тот же функционал, подскажите как лучше подойти к проблеме?

Я создал класс, описывающий поведение кнопки ToggleButton.as, но у меня в разных файлах, есть кнопки, с очень похожим функционалом, вся проблема в том, что из-за того, что все в разных файлах, я не могу наследоваться от ToggleButton, а только от MovieClip, т.к. это документ классы разных кнопок. Может в каждом документ классе создавать экземпляр класса ToggleButton, соответственно расшарив до "public" его свойства и методы и соответственно, менять их и добавлять по мере необходимости в документ классе текущей кнопки? Или же есть реешение лучше?

Добавлено через 8 часов 55 минут
хм, народ, неужели никто не сталкивался? Неужели придется copy/paste использовать для документ класса?

TWETTI 03.08.2010 11:23

Кинь исходник, я посмотрю.

SilverToad 03.08.2010 11:33

Если у тебя есть несколько классов которые реализуют одну и ту же логику, то имеет смысл вынести её в базовый класс, а остальные наследовать от него.

AlexDesinger 03.08.2010 11:51

ситуация немного другая - я не могу наследоваться от этого класса, поскольку каждый раз это новый проект с новым документ классом, который должен наследоваться от MovieClip, мне нужно реализовать функционал в разных файлах, может какие нть подойдут инструменты типа - интерфейс, инкапсуляция, наследование, композиция, просто не могу так сходу определить что может подойти.

Hidest 03.08.2010 12:11

А причем тут документ класс и класс кнопки? У вас приложение состоит из одной кнопки?

Psycho Tiger 03.08.2010 12:18

Гм, и плевать.
Пусть будет
YourCustom class extends Button Class extends MovieClip

Когда говорят что должен наследоваться от MovieClip имеют ввиду, что они смогут привести это дело к MovieClip, т.е. достаточно чтобы MovieClip мелькнул в цепочке наследования. А будет он от него наследоваться сразу или через 40 классов - дело Ваше.

AlexDesinger 03.08.2010 12:40

Psycho Tiger, ты имеешь ввиду так -
Код AS3:

FirstToggleButton extends ToggleButton extends MovieClip

?
обалдеть...это то что надо, но как это будет работать? Flash поймет в итоге что это?

А вообще тогда вопрос - вот у меня есть класс, от которого я унаследуюсь ToggleButton, а что из себя будет представлять класс FirstToggleButton, это будет тоже самое+ функционал FirstToggleButton, т.е. я в классе ToggleButton могу писать все так, как будто бы это уже и есть класс FirstToggleButton?

И потом, по идее в FirstToggleButton, я могу добавить функционал, напрмер создать переменную или функцию...хм...а если нужно обратиться к переменной или функции родительского класса, они там public должны быть? И вообще как к ним обращаться через this, через parent?

gloomyBrain 03.08.2010 12:55

Цитата:

Psycho Tiger, ты имеешь ввиду так -
Нет. Вы не можете унаследовать от двух классов сразу - этого нет в AS3. Имелось ввиду написание собственного CustomClass extends MovieClip + написание DocumentClass extends CustomClass

vinch 03.08.2010 12:59

Цитата:

И потом, по идее в FirstToggleButton, я могу добавить функционал, напрмер создать переменную или функцию...хм...а если нужно обратиться к переменной или функции родительского класса, они там public должны быть? И вообще как к ним обращаться через this, через parent?
Достаточно protected. parent - нет такого, нужно через this (хотя можно вообще без this).

gloomyBrain 03.08.2010 13:11

Цитата:

нужно через this
или через super (parent существует только для DisplayObject'ов и ссылается на контейнер, содержащий текущий экземпляр, а super - это то, от чего наследуется текущий экземпляр)


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

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