Руководство по actionscript. часть 5, стр. 052

MouseDownListener); canvasContai ner. addEventLi stener(MouseEvent. M0USE_M0VE,

mouseMoveListener);

// Регистрируем приемники для событий отпускания кнопки мыши и нажатия

// клавиши от объекта Stage (то есть для глобальных событий).

// Используем объект Stage, поскольку событие отпускания кнопки мыши

// должно всегда завершать рисование, даже если указатель мыши

// не находится над областью рисования. Подобным образом, нажатие

// пробела должно всегда приводить к стиранию рисунка, даже когда

// объект canvasContainer не имеет фокуса.

stage. addEventLi stener(MouseEvent. MOUSEJJP, mouseUpLi stener);

stage. addEventLi stener(KeyboardEvent. KEYJDOWN, keyDownLi stener);

}

// Устанавливает цвет указанного пиксела. Используем этот способ

// для рисования одиночного пиксела, поскольку метод Graphics. lineTo( )

// не рисует одиночные пикселы

public function drawPoint (х:int, y:int. color:uint = OxFFOOOOOO):void { // Устанавливаем цвет указанного пиксела canvas. bitmapData. setPixel(х. у, color);

}

// Рисует векторную линию в объекте virtual Canvas, а затем копирует // растровое представление этой линии в объект canvasData (доступ // к растровому представлению осуществляется через переменную // canvas. bitmapData)

public function drawLine (xl:int, yl:int, x2:int, y2:int,

col or:uint = OxFFOOOOOO):void { // Рисуем линию в объекте virtual Canvas virtualCanvas. graphics. clear( ); virtual Canvas, graphics. lineStyled, 0×000000, 1, true,

LineScaleMode. NORMAL, CapsStyle. NONE); vi rtualCanvas. graphi cs. moveTo(xl, yl); vi rtualCanvas. graphi cs.1i neTo(x2, y2); // Копируем линию в объект canvasData canvas. bitmapData. draw(vi rtualCanvas);

}

// Отвечает на события MouseEvent. MOUSEJDOWN

private function mouseDownListener (e:MouseEvent):void {

// Устанавливаем флажок, указывающий на то, что основная кнопка мыши

// в настоящий момент нажата

isDrawing = true;

// Запоминаем точку, в которой щелкнул пользователь, чтобы в случае // перемещения мыши мы могли нарисовать линию из этой точки lastX = e. localX;

lastY = е. localY;

// Рисуем точку в позиции, где произошел щелчок кнопкой мыши drawPoint(e. localX, е. localY);

}

// Отвечает на события MouseEvent. M0USE_M0VE

private function mouseMoveListener (e:MouseEvent):void {

// Рисуем линию, когда мышь перемещается над областью рисования

// при нажатой основной кнопке мыши

if (isDrawing) {

// Используем переменные 1ocalX и localY, чтобы получить позицию // указателя относительно объекта canvasContainer. var thisX:int = e. localX; var thisY:int = e. localY;

// Рисуем линию в новую позицию указателя мыши drawLinedastX. lastY, thisX, thisY);

// Запоминаем последнюю позицию указателя мыши // для следующего раза lastX = thisX; lastY = thisY;

// Обновляем экран сразу после завершения выполнения // данной функции-приемника события е. updateAfterEvent( );

}

// Отвечает на события MouseEvent. MOUSEJJP

private function mouseUpListener (e:MouseEvent):void {

// Устанавливаем флажок, указывающий на то, что в настоящий момент

// основная кнопка мыши отпущена

isDrawing = false;

}

// Отвечает на события KeyboardEvent. KEYJDOWN private function keyDownListener (e:KeyboardEvent):void { // Стираем рисунок, когда пользователь нажимает клавишу Пробел. // Чтобы очистить рисунок, мы присваиваем всем пикселам // значение белого цвета, if (е. charCode == Keyboard. SPACE) { canvas. bitmapData. fillRect(new Rectangle(0. 0,

canvas. width, canvas. height),

OxFFFFFFFF);

}

}

}

}

Как метод draw( ) использует значения канала Alpha. Когда прозрачный объект-источник BitmapData копируется в прозрачный целевой объект BitmapData

с помощью метода draw ( ), каналы Alpha двух объектов BitmapData объединяются вместе на уровне пикселов с использованием алгоритма режима смешения BlendMode. SCREEN, который записывается следующим образом:

(значениемрЬаИсходногоОбъекта * (2ЬЬ-значениеМр1лаЦелевого0бъекта) I 256) + значениеА 1р11аЦелевого0бъекта

Когда значения канала Alpha двух объединяемых объектов находятся в диапазоне от 1 до 254, результатом будет являться значение канала Alpha с большей непрозрачностью, чем любое из исходных значений канала Alpha. Если объединяемый источник является полностью прозрачным, целевой объект BitmapData сохраняет свое исходное значение канала Alpha. Если целевой объект является полностью прозрачным, его значение канала Alpha заменяется значением канала Alpha объекта-источника.

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

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

Вы должны авторизоваться для отправки комментария.

Полезные ссылки
Случайные записи
  • 26.02.2011">Руководство по actionscript. часть 6, стр. 076
  • 28.02.2011">Руководство по actionscript. часть 6, стр. 018
  • 27.07.2011">Ремонт видеокарт поручайте профессионалам
  • 12.03.2011">Руководство по actionscript. часть 3, стр. 117
  • 17.03.2011">Руководство по actionscript. часть 3, стр. 002
  • 04.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.5
  • 22.03.2011">Руководство по actionscript. часть 2, стр. 024
  • 11.08.2010">Популярное расположение контактной информации
  • 20.07.2010">Распространенные недочеты веб-дизайнеров
  • 11.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.2
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 031
  • 14.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.80
  • 18.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.57
  • 19.03.2011">Руководство по actionscript. часть 2, стр. 103
  • 10.03.2011">Руководство по actionscript. часть 4, стр. 033
Опрос

Какие цвета вы предпочитаете?

View Results

Loading ... Loading ...