Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Исчерпывающий смысл Extends (http://www.flasher.ru/forum/showthread.php?t=202386)

Fogflasher 12.07.2013 16:17

Исчерпывающий смысл Extends
 
Всем привет, хотел вот такой теоретический вопрос прояснить.

Я так понимаю, что Extends нужен лишь для того, чтобы данный класс имел возможность использовать все глобальные переменные и методы своего суперкласса. И не более того?

Просто иногда компиллятор заставляет наследовать некоторые классы например к MovieClip.
Хотя сам класс не использует никакие методы этого системного класса. Или всё-таки как-то неявно использует?

Может быть есть что-то еще, какой-то дополнительный смысл в этой директиве?

KumoKairo 12.07.2013 16:25

Исчерпывающей некуда :)

Fogflasher 12.07.2013 16:32

KumoKairo, ну в целом это всё понятно, да.

Но зачем например компиллятор Flash CS3 заставляет наследовать некий класс, если его методы и свойста не нужны?

Taras_Z 12.07.2013 16:44

Какие например?

belv 12.07.2013 16:48

Это вы так думаете , что свойства не нужны .Потому что вы явно их не используете, на самом деле например ,если вы хотите создать новый отображаемый объект вы должны расширить класс , который в свою очередь через цепочку наследования, наследует класс DisplayObject.Чтобы новый Вами созданный объект обладал свойствами , которые позволят отобразить его на экране.

caseyryan 12.07.2013 17:03

Цитата:

Но зачем например компиллятор Flash CS3 заставляет наследовать некий класс, если его методы и свойста не нужны?
Не правда. Не бывает такого.
Он заставляет унаследовать документ класс от Sprite или MovieClip, потому что нужен метод addChild (как минимум), а так как унаследовать его от DisplayObjectContainer нельзя, спрайт является минимальным требованием, плюс этот класс должен быть диспетчером событий, коим спрайт (и его наследник мувиклип), так же является.

Fogflasher 15.07.2013 09:13

Ясно, спасибо.

wvxvw 15.07.2013 11:48

Ну, на самом деле Flash CS предлагает не самый лучший воркфлоу. Действительно хорошего мало в наследовании от Sprite/MovieClip если нужно написать компоненту более сложную, чем скин для другой компоненты.
Лучшей практикой было бы создать легковесные классы управляющие поведением скина, а в скине использовать обычные, или дополненные графические объекты. Таким образом вы избегаете необходимость учитывать поведение по умолчанию унаследованых классов в своем коде. Например, очень частой порочной практикой является желание переопределить x, y, width, height у графических объектов. Но когда это доходит до каких-то недоразумений вызванных тем, что эти свойства в действительности не просто поля, а вычисляются на основе матрицы трансформации хранящейсвя в displayObject.transform проблема становится очень сложной.
Аналогичная ситуация с масками, режимами наложения, scrollRect, scale9grid, и может еще чего запамятовал.

Так что я бы советовал оставить Sprite / MovieClip в покое - не наследовать их / не пытаться изменить поведение по умолчанию, а просто включать их как члены ваших классов. Т.е. композиция вместо наследования.

Fogflasher 15.07.2013 12:09

wvxvw, понятно. У Мука наследование идет первым делом, но когда он рассказывает про композиции, то получается, что они имеют больше плюсов, а в минусах только, вроде бы скорость исполнения.

Цитата:

на самом деле Flash CS предлагает не самый лучший воркфлоу.
А на флэш девелопе воркфлоу лучше? Может тогда сразу на нём всё делать, не парицца с CS.

belv 15.07.2013 13:00

wvxvw , а как вы себе представляете написания основного класса (назовем его Main.as) , не используя наследования , а полагаясь на композицию .Да и свой собственный класс , который вы напишите и захотите его экземпляр отобразить на экране , должен ка минимум расширять DisplayObject , ну а какие либо другие свойства от MovieClip например , вы сможете использовать через композицию.


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

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