![]() |
Предок классов
Вопрос скорее глупый, но мне интересный :)
Допустим есть некий ролик (который не будет менятся в будущем) и есть несколько других роликов (разные по содержанию и смыслу, но имеющие одинаковые методы), они будут служить "Скинами" Задача первого ролика загружать в себя "скин" и отправлять в него настройки. Так вот.. Каждый скин будет обрабатывать настройки по-разному, а первый ролик должен быть уверен, что методы обработки в них во всех есть. Есть пара мыслей как это сделать: 1. Создать "скинам" общего предка с пустыми (:( ) методами, а в дальнейшем их оверрайдить 2. Опять создать общего предка, а в методах диспатчитьЕвент 3. Сделать интерфейс... Малопонятный для меня способ. Подскажите кто знает. Как сделать так, чтобы потом мне перед внуками не было стыдно, что я это сделал? |
думаю, 3-й способ
Создаете интерфейс, описываете в нем сигнатуры всех необходимых методов для классов-скинов Классы флэшек-скинов должен реализовывать этот интерфейс. Если какой-то метод в таком классе будет отсутствовать - ролик скина просто не скомпилируется Если в каких-то методах есть что-то общее для всех скинов, то создайте супер класс и соотвественно в наследниках оверрайдите методы там где это необходимо... |
Ок! Спасибо!
А можно в классе одновременно extends класс и implement интерфейс?? ...и еще! Как тогда в главном ролике писать? Код AS3:
|
Я передаю класс скина, а компонент уже приводит его к определенному типу, и далее управляет его свойствами и методами.
|
Цитата:
насчет второго вопроса.. а зачем приводить newChild к ISkin? в классе newChild должен быть реализован метод getParams по-любому Код AS3:
|
Ну так это... Скины-то разные должны быть.
И Классы соответственно разные. Если им не создавать общего предка, то ближайший родственник - это Sprite (или типа того), а у него нет метода getParams |
Код AS3:
|
Цитата:
Круто! Буду пробовать. |
Ну как бы вы не интерфейсу присваиваете, а объекту.
Код AS3:
|
Что-то вот это вот:
Код AS3:
Ай ну да ладно! Сделаю им общего предка с пустыми функциями... Всем спасибо! |
| Часовой пояс GMT +4, время: 16:02. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.