Как правильно расширить класс?
Привет всем.
Подскажите пожалуйста как сделать правильно. Есть класс ImageBox - некий контейнер, которому можно задавать размеры, в себя умеет загружать картинку и пустое место заполнять выбранным фоном. От этого класса будут производные классы. Например, класс ImageBoxExt - делает все тоже самое что и ImageBox, но еще при наведении должны внутри появляться кнопка корзины и чекбокс. http://www.flasher.ru/forum/attachme...chmentid=33228 Наследоваться от ImageBox? Код AS3:
Либо просто создавать класс, наследуясь от Sprite и внутри создавать экземпляр класса ImageBox? Код AS3:
|
Цитата:
|
Undefined, почему нужно перекрывать? Или почему это неправильно?
Перекрывать нужно, т.к. надо ловить момент загрузки картинки, что бы потом остальное дорисовывать сверху. Либо менять слои местами. Следовательно, нужны изменения в методах родительского класса. А неправильно, т.к. это нарушение инкапсуляции.. |
Цитата:
Цитата:
Если изначально планируется, что в базовом классе грузится какая-то картинка, а объекты дочерних классов должны знать об этом, то и архитектуру родительского класса надо делать сразу с учетом этого. Если нужно дождаться загрузки картинки, то можно обработчику сделать модификатор protected и в дочернем классе просто его перезаписать Код AS3:
Код AS3:
|
caseyryan, спасибо большое!
Для личного пользования всегда обходился только private и public. Но в данном случае не хотелось использовать public у родительского метода для перезаписи в наследнике, т.к. onImageLoaded не относится к интерфейсу данного класса. Теперь буду знать про protected ) Цитата:
|
Цитата:
Цитата:
|
А, ну у меня в родительском методе вконце стоит диспатч события после загрузки картинки.
Код AS3:
Код AS3:
Пасиб! ) |
Так может картинку на 0 уровень всегда пихать после загрузки?
|
Цитата:
|
Цитата:
Во-вторых, для события complete есть штатная константа Event.COMPLETE, даже свою объявлять не надо Ну и в третьих - отправка события - это всегда более ресурсоемкий способ, чем вызов метода. У тетя там и так событие приходит при загрузке картинки. Создавать еще одно - это оверхэд. Оверрайд в данном случае более правильный подход. Не нужно ни слушателей дополнительных ни событий и всё по ООПшному А если событие все-таки нужно для чего-то ещё, то ты можешь не создавать новое, а просто передиспатчить то же Код AS3:
|
Часовой пояс GMT +4, время: 02:31. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.