В этом уроке я покажу вам как создать эффект спрея во Flash. Вы можете проверить мувик выше и посмотреть, как это выглядит. Изменяйте цвет, плотность и размер спрея, чтобы увидеть изменения эффекта. Давайте начнем прямо сейчас.
Настройка окружения
1. Создайте новый доекумент размером 400x400.
2. Импортируйте картинку на сцену. Проверьте, чтобы ее размер был 400x300.
3. Расположите картинку в левый верхний угол.
4. Конвертируйте картинку в муви клип. Назовите его "imageMC" и установите точку регистрации в центре.
5. Дайте картинке instance name = "drawingArea".
6. Откройте вашу библиотеку компонент (Ctrl + F7). Перетащите один слайдер на сцену. Расположите его там, где хотите.
7.Дайте слайдеру имя instance name="sizeSlider". Примените следующие установки.
8. Перетащите другой слайдер на сцену.
9. Дайте ему instance name = "densitySlider". Примените следующие установки.
10. Перетащите color picker на сцену. Дайте ему instance name = "myColorPicker". Идем в Actionscript
11. Откройте панель actions и напишите следующее.
Code
/* Нам необходимо создать объект BitmapData, чтобы работать с пикселами объекта Bitmap Мы хотим, чтобы wallCanvas был прозрачным вначале, вот почему мы используем значение 0x00ffffff как параметр */ var wallCanvas:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight - 100, true, 0x00ffffff);
//Создадим объект Bitmap чтобы ссылаться на объект BitmapData var bitmap:Bitmap = new Bitmap(wallCanvas);
//Добавим витмап на сцену addChild (bitmap);
//Мы слушаем событие mouse down на стене drawingArea.addEventListener (MouseEvent.MOUSE_DOWN, mouseDownHandler);
//Мы слушаем событие mouse up для всей сцены stage.addEventListener (MouseEvent.MOUSE_UP, mouseUpHandler);
//Это цвет спрея var color:uint;
//Это максимальный радиус спрея var maxRadius:Number;
//Это плотность спрея var density:Number;
//Это вызывается, когда мышь нажимается на стене function mouseDownHandler (event:MouseEvent):void { //Добавляем ENTER_FRAME, чтобы мы могли рисовать в каждом фрейме addEventListener (Event.ENTER_FRAME, onEnterFrame); }
//Это вызывается, когда мышь отжимается function mouseUpHandler (event:MouseEvent):void { //У нас нет необходимости в ENTER_FRAME, если мышь отжата (ничего не рисуется) removeEventListener (Event.ENTER_FRAME, onEnterFrame); }
//Эта функция отвечает за все рисование function onEnterFrame (event:Event):void {
//Получим размер из sizeSlider maxRadius = sizeSlider.value;
/* Получим цвет из myColorPicker. Мы добавим 0xff000000 к цвету, чтобы сделать пиксел видимым когда мы рисуем его (мы рисуем пиксел в цикле). */ color = myColorPicker.selectedColor + 0xff000000;
//Получим плотность из densitySlider density = densitySlider.value;
/* Плотность определяет, сколько циклов мы имеем. Другими словами, сколько пикселей рисуется в каждом фрейме. */ for (var i:int = 0; i < density; i++) {