![]() |
Как проводить замену спрайтов?
Всем доброго времени суток. Я недавно приступил к изучению as3, начал с книги К.Мука. К своему сожалению обнаружил, что данная книга написана сложноватым для меня языком и часть материала я так и не понял. В итоге решил просто начать делать что-либо на as3, и сейчас столкнулся с проблемой которую не знаю как решить: как провести замену одного спрайта на другой?
На данный момент мне нужно создать объект, который будет выполнять функцию кнопки. У кнопки должно быть только 2 отображаемых состояния: вкл\выкл. Нажал на кнопку - отображается изображение, соответствующее "вкл", ещё раз на неё нажал - отображается изображение, соответствующее состоянию "выкл". Решил для этого дела создать собственный класс. Но не могу понять, как реализовать замену одного изображения на другое. Вот код, который есть на данный момент и который исправно работает: Код AS3:
Очень бы хотелось понять, как реализуется спрайтовая программная анимация в as3. Если кто может объяснить - буду премного благодарен. И если возможно, поделитесь примером кода кнопки. |
Набросал заготовку. И тут меня понесло. В оригинале ToggleButton наследуется от Button, у которого четыре состояния: up, down, over и disabled. Три первых состояния соответствуют поведению курсора или "пальца" для соответствующей среды исполнения — десктопе или мобилке. Четвертое зависит от флага компонента enabled, показывающий на то, что может ли компонент сейчас быть интерактивным. ToggleButton привносит еще четыре состояния с добавлением "andSelected": "upAndSelected", "downAndSelected", "overAndSelected", "disabledAndSelected".
ToggleButton диспатчит два вида собственных событий: Event.SELECTED, если переключение произошло из-за взаимодействия с пользователем, точнее, из-за события MouseEvent.CLICK с проверкой результата диспатча. Если диспатч был неудачным, т.е. какой-то из слушателей сделал event.preventDefault(), то переключение состояния не происходит. Т.о. мы привносим гибкость, и управление состоянием передается во внешний мир. Второе событие Event.VALUE_COMMIT посылается всегда при успешном переключении состояния selected / not selected. Оно необходимо в случае программного переключения, без участия пользователя. Итого, в случае с инициативой пользователя посылается два события: Event.SELECTED и Event.VALUE_COMMIT. В случае внешнего программного переключения только одно Event.VALUE_COMMIT. По сути, визуальная составляющая состояния любого компонента описывается термином "скин". Button и ToggleButton относятся к категории таких компонентов. Компонент содержит логику изменения состояния, а система скинирования переключает соответствующий этому состоянию скин. Само переключение может быть не мгновенным, а иметь т.н. transition, переход из предыдущего состояния в новое. Например, какие-нибудь эффекты анимации, поддерживаемые Tween-движками. Но это все решается на уровне суперкласса, визуализирующего состояние и лежащего в иерархии наследования выше Button. Очень удобно для описания возможных состояний компонента использовать метаданные. Код AS3:
|
Чисто на глаз.
Код AS3:
|
Большое спасибо за ответы! Очень пригодились оба варианта для понимания as3. Пока не представляю, как должен выглядеть адекватный супер-класс для кода dimarik, но попробую его реализовать. Очень интересно!
Bletraut, если я не ошибаюсь, ToggleButton здесь унаследует импорты от супер-класса, например, от TargetButtonSkin, который в данном примере опущен. |
Цитата:
|
| Часовой пояс GMT +4, время: 21:52. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.