Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 11.06.2012, 15:45
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 1  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
По умолчанию Как сделать стерку через BlendMode.ERASE?

В рисовалке 2 режима - рисование линиями и стирание. Пытаюсь реализовать второе через BlendMode.ERASE, но как-то не работает... Нужно чтобы eraser создавал стирающий след по тем линям что нарисованы drawingLine. maskLine - не отображается, нужна для другого.

Код AS3:
private var con:Sprite = new Sprite();
private var drawingLine:Sprite = new Sprite();
private var maskLine:Sprite = new Sprite();
private var eraser:Shape = new Shape();
 
con.cacheAsBitmap = true;
eraser.cacheAsBitmap = true;
eraser.graphics.beginFill(0xff0000, 0.5);
eraser.graphics.drawCircle(0, 0, brushSize);
eraser.graphics.endFill();
eraser.blendMode= BlendMode.ERASE;
 
this.addEventListener(MouseEvent.MOUSE_MOVE,onMove);
this.addEventListener(MouseEvent.MOUSE_DOWN,onDown);
this.addEventListener(MouseEvent.MOUSE_UP,onUp);
 
protected function onDown(ev:MouseEvent):void {
	if(brushMode){
		con.addChild(drawingLine);
		drawingLine.graphics.lineStyle(brushSize, brushColor, 0.5);
		drawingLine.graphics.moveTo(mouseX, mouseY);
		maskLine.graphics.lineStyle(brushSize, brushColor, 1);
		maskLine.graphics.moveTo(mouseX, mouseY);
		this.addEventListener(MouseEvent.MOUSE_MOVE, onMove);
	} else {
		drawingLine.addChild(eraser);
		this.addEventListener(MouseEvent.MOUSE_MOVE, onMove);
}
}
 
protected function onUp(ev:MouseEvent):void {
this.removeEventListener(MouseEvent.MOUSE_MOVE, onMove);
}
 
protected function onMove(ev:MouseEvent):void {
	if (brushMode){
		drawingLine.graphics.lineTo(mouseX, mouseY);
		maskLine.graphics.lineTo(mouseX, mouseY);
	} else {
		eraser.x = mouseX;
		eraser.y = mouseY;
	}
}
Добавлено через 15 минут
Опять поторопился. Конечно, нужно рисовать линии eraser также как и drawingLine. При том в 2-х вариантов - для отображения и для маски.
__________________
In Code We Trust

Создать новую тему   Часовой пояс GMT +4, время: 11:28.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 11:28.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.