Подписаться на блог через FeedBurner

Что я вынес из последнего проекта на Action Script (Flex, Flash)

Итак, крайний проект, в котором я принимал непосредственное участие – это нарезалка mp3 для мобильника.

Лично мой вклад в рождение данного сервиса заключался в реализации веб-морды, то бишь флешки, в которой всё варится.

Нужно сделать красивую и сложную заливку?

gradientИспользуйте класс BitmapData. Именно с его помощью реализована заливка градиентом выделенной области рингтонмейкера.

Пример
Определяем пиксельную карту:

fillProgressBarMap = new BitmapData(1, 28, false);
fillProgressBarMap.setPixel(0, 0, 0x4ab0ff);
fillProgressBarMap.setPixel(0, 1, 0x4ab0ff);
fillProgressBarMap.setPixel(0, 2, 0x4ab0ff);
fillProgressBarMap.setPixel(0, 3, 0x4ab0ff);
fillProgressBarMap.setPixel(0, 4, 0xd1eafc);
...
fillProgressBarMap.setPixel(0, 27, 0x29d2f7);

Собственно, рисуем:

sliderValue.graphics.beginBitmapFill(fillProgressBarMap, null, true, false);
sliderValue.graphics.drawRect(getLeftSliderX(), 0, getRightSliderX() - getLeftSliderX() + 1, sliderValue.height);

Вызывать методы из родителя напрямую – зло, за которое нужно бить по рукам!

Данная аксиома вертелась у меня в уме уже давно, но каждый раз я пытаюсь ею пренебречь. Думаю: ну надо – то всего один метод вызвать, зачем забор городить со всякими events? Но, в итоге снова возвращаюсь к этой к этой аксиоме и пользуюсь Event`ами. Евенты, они же события – сильнейшая сторона ActionScript.

Пример
Говорим всем, что наш компонент может сгенерировать вот такой event:

<mx:Metadata>
    [Event(name="playFromMsec", type="com.view.MySlider.SliderEvent")]
</mx:Metadata>

Вешаемся на этот тип события в родителе:

<view:MySlider playFromMsec="{ onSliderPlayFromMsec(event) }" />

Генерируем событие в дочернем компоненте:

var playFromPosEvent:SliderEvent = new SliderEvent(SliderEvent.EVENT_PLAY_FROM_POS);
playFromPosEvent.pos = leftSliderMsecPos;
dispatchEvent(playFromPosEvent);

Используйте stopImmediatePropagation() и preventDefault() для отмены события

Встала задача – показать по клику на кнопку “Help” поверх всего окно с помощью, потом по клику в любой области, даже по кнопке – закрыть его. Кстати говоря, впервые за свою скромную практику использования AS3 использовал stopImmediatePropagation и preventDefault. Задача была решена с использованием этих двух методов. Задача этих методов – остановить дальнейшее выполнение текущего эвента, очень полезная вещь, как ни крути.

Не всегда для динамических элементов необходимы картинки состояний

button Большинство кнопок, если на них нет замысловатого градиента или фактуры можно реализовать с помощью пары VBox`ов, Label`ов и шаманства со стилями :)

Не подбирайте значения стилей “на глаз”. Используйте Flex3 Style Explorer

Flex3StyleExplorer

Убираем размытие под Alert`ом

antiBlur

<mx:Style>
    Alert
    {
        modalTransparencyBlur: 0;
        modalTransparency: 0;
        modalTransparencyColor: #FFFFFF;
        modalTransparencyDuration: 10;
    }
</mx:Style>

Вот это, собственно всё, чем я хотел поделиться :)

к статье “Что я вынес из последнего проекта на Action Script (Flex, Flash)”

  1. Всем Привет!

Оставить комментарий