首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何应用滤镜模糊在线工具?动作脚本

如何应用滤镜模糊在线工具?动作脚本
EN

Stack Overflow用户
提问于 2013-02-23 19:49:59
回答 1查看 451关注 0票数 0

所以我有两行工具。第一个是普通的线条工具,第二个是带有滤镜模糊效果的线条工具。该工具在画布上绘制线条时有效,但第一个法线工具也具有模糊效果。如何仅在第二个工具上应用模糊效果?

很抱歉语法不好...

代码语言:javascript
复制
 var blurX:Number = 20;
 var blurY:Number = 20;
 var quality:Number = 1;
 var my_blur_filter:BlurFilter = new BlurFilter(blurX, blurY, quality);

//没有滤镜模糊的工具

代码语言:javascript
复制
function PencilTool(event:MouseEvent):void{

quitActiveTool();
active = "Pencil";

board.addEventListener(MouseEvent.MOUSE_DOWN, MouseDown);
board.addEventListener(MouseEvent.MOUSE_UP, MouseUp);

}


function MouseDown(e:MouseEvent):void{


    doDraw=true;

    drawingLine.graphics.moveTo(drawingLine.mouseX, drawingLine.mouseY);
    drawingLine.graphics.lineStyle(lineSize, activeColor, lineAlpha);

    board.addEventListener(MouseEvent.MOUSE_MOVE, MouseMove);

}

//带有滤镜模糊的工具

代码语言:javascript
复制
 function brushTool(event:MouseEvent):void{

    quitActiveTool();
    active = "Brush";

      board.addEventListener(MouseEvent.MOUSE_DOWN, brushMouseDown);
      board.addEventListener(MouseEvent.MOUSE_UP, MouseUp);

}


function brushMouseDown(e:MouseEvent):void{




    doDraw=true;

    if(active=="Brush"){
    drawingLine.filters = new Array(my_blur_filter);


    drawingLine.graphics.moveTo(drawingLine.mouseX, drawingLine.mouseY);


    drawingLine.graphics.lineStyle(lineSize, activeColor, lineAlpha);


    }
    board.addEventListener(MouseEvent.MOUSE_MOVE, MouseMove);

}

//鼠标移动&鼠标释放

代码语言:javascript
复制
function MouseMove(e:MouseEvent):void{
                var curX:Number=drawingLine.mouseX;
                var curY:Number=drawingLine.mouseY;


                        drawingLine.graphics.lineTo(curX,curY);


                    e.updateAfterEvent();

    }

function MouseUp(event:MouseEvent):void{

    doDraw=false;
    }
EN

回答 1

Stack Overflow用户

发布于 2013-02-23 23:28:49

滤镜将应用于整个显示对象,而不仅仅是在设置滤镜之后添加的图形。您可以使用两个层,铅笔的drawingLine和画笔的drawingLineBlurred,然后只将模糊添加到drawingLineBlurred

您可以通过为每个笔划创建一个新的显示对象,甚至将这些笔划绘制到BitmapData对象来使其变得更加复杂,但对于一个简单的绘制工具来说,这可能就足够了。

作为绘制多个图层的示例,您可以在每次按下鼠标时创建一个新的Shape并绘制到该Shape,而不是drawingLine

代码语言:javascript
复制
private var currentStroke:Shape;

private function startDrawing():void {
    currentStroke = new Shape();
    addChild(currentStroke);

    // Apply the blur filter to currentStroke here if the brush tool is selected.

    currentStroke.graphics.moveTo(currentStroke.mouseX, currentStroke.mouseY);
    currentStroke.graphics.lineStyle(lineSize, activeColor, lineAlpha);
}

// etc

这显然不是很有效率,因为你最终会得到很多很多的Shape,如果这成为一个问题,我建议你改用BitmapData,并在每次笔划完成后使用它来绘制。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15040213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档