![]() |
Организовать грамотный код
Возникла проблемка, как грамотно организовать работу кода. Вот простейший код, который помещен в прослушиватель события ENTER_FRAME:
Код AS3:
А то у меня как-то все громоздко получается и некрасиво. Или же тут нужно собственные события создавать? |
Ну вообще-то бы надо на кастомное событие производить действие, то есть надо слушать тот объект, который может изменить rectSpr.Но если очень хочется на EnterFrame:
Код AS3:
Код AS3:
|
Цитата:
|
Колин Мук "Action Script 3.0 для Flash. Подробное руководство."
|
Уже несколько раз перечитываю. Он даже щас открыт у меня на главе Пользовательские события:)
|
Кхм, давай рассуждать.Пока без всяких паттернов и проч.
Что у тебя может менять высоту rectSpr? Как вариант (не самый лучший, но все же): 1)создаешь свой класс наследник от Sprite и экземпляр этого класса и будет rectSpr 2)переопределяешь там heigth - Код AS3:
4)добавляешь или удаляешь _scrollBar |
rectSpr - тут у меня находится различный контент(height у всех разный), который изменяет свои размеры при наведении на него. Если height вылазит за пределы сцены, то появляется скроллер.
Правильно ли я понимаю, что в этом классе sprRect я должен диспетчеризировать свое событие? |
Ну к примеру:
Класс Main.as Код AS3:
Код AS3:
Но когда пишут скроллы, то обычно учитывается, что они будут работать с любым видим контентом, то есть сам скролл должен приспосабливаться под контент, а не наоборот. |
Понял зачем событие resizeSpr.addEventListener(ResizeSprite.RESIZE, _resizeHandler) только когда скомпилировал. То есть тут экземпляру класса присваивается новое значение высоты и ширины. И не надо ЭнтерФрэйм использовать.
Ладно... буду разбираться в своей огороде... |
Цитата:
Еще раз, зачем я сделал класс ResizeSprite? Чтобы можно было диспатчить(выкидывать) событие, когда у экземпляра этого класса(resizeSpr) изменится высота или ширина. var resizeSpr:ResizeSprite = new ResizeSprite(); Создали экземпляр класса. resizeSpr.addEventListener(ResizeSprite.RESIZE, _resizeHandler); Подписались на "слушание" "выкидывания" события 'resize', соответственно в функции _resizeHandler можно что-то делать, зная что эта функция вызывается только когда у resizeSpr изменяться размеры. resizeSpr.addEventListener(MouseEvent.CLICK, _clickHandler); тут и ниже - это просто пример кода, при клике мышью на resizeSpr, у него меняются размеры, как только они поменялись вызывается функция _resizeHandler. Еще фишка, если в коде ResizeSprite.as написать не так: dispatchEvent(new Event(RESIZE)); а вот так: dispatchEvent(new Event(RESIZE, true)); то можно наделать кучу resizeSpr, дальше подписаться на stage stage.addEventListener(ResizeSprite.RESIZE, _resizeHandler); и мы будем знать когда меняются размеры у любого из экземпляров ResizeSprite. |
| Часовой пояс GMT +4, время: 19:22. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.