創作內容

0 GP

利用BitMap實現橡皮擦功能

作者:秋川│2012-08-26 07:56:43│贊助:0│人氣:334
//cp 要用智慧物件的顏色選擇器
var txt :TextField = new TextField ();
this.addChild(txt);
var mc_move :MovieClip = new MovieClip();
this.addChild(mc_move);
var a :MovieClip = new MovieClip ();
var b :MovieClip = new MovieClip();
mc_move.x=100;
a.name="a";
b.name="b";
a.x=150;
b.x=300;
with (mc_move.graphics) {
lineStyle(2);
beginFill(0xFFFFFF);
moveTo(0,0);
lineTo(300,0);
lineTo(300,300);
lineTo(0,300);
lineTo(0,0);
}
with (a.graphics) {
lineStyle(2);
beginFill(0xFF0000);
moveTo(0,0);
lineTo(50,0);
lineTo(50,50);
lineTo(0,50);
lineTo(0,0);
}
with (b.graphics) {
lineStyle(2);
beginFill(0xFF0000);
moveTo(0,0);
lineTo(50,0);
lineTo(50,50);
lineTo(0,50);
lineTo(0,0);
}
this.addChild(a);
this.addChild(b);

//主容器
var main:Sprite = new Sprite();
main.mouseEnabled=false;
addChild(main);
//临时容器(所有操作都将先画在临时容器里,再进行"画"或"擦")
var mc:Sprite = new Sprite();
main.addChild(mc);
//保存最终画出来的内容的bitmapdata
var content:BitmapData=new BitmapData(550,400,true,0x00FFFFFF);
//把content显示出来
var show:Bitmap=new Bitmap(content);
main.addChildAt(show,0);
//默认选中画笔
var action:Number=0;
txt.text = "当前选中:画笔"
;
mc_move.addEventListener(MouseEvent.MOUSE_DOWN,startDraw);
a.addEventListener(MouseEvent.CLICK,changeAction);
b.addEventListener(MouseEvent.CLICK,changeAction);
function changeAction(e:MouseEvent):void {
if (e.target.name=="a") {
  action = 0
         ;
  txt.text = "当前选中:画笔"
          ;
  mc.visible = true
     ;
} else {
  action = 1
         ;
  txt.text = "当前选中:橡皮"
        ;
  mc.visible = false
    ;
}
}
function startDraw(e:MouseEvent):void {
mc.graphics.lineStyle(20,cp.selectedColor);
mc.graphics.moveTo(mouseX,mouseY);
mc_move.addEventListener(MouseEvent.MOUSE_MOVE,drawing);
stage.addEventListener(MouseEvent.MOUSE_UP,stopDraw);
}
function stopDraw(e:MouseEvent):void {
if (action!=1) {
  content.draw(mc,new Matrix(),new ColorTransform(),BlendMode.NORMAL,new Rectangle(0,0,550,400));
}
mc.graphics.clear();
mc_move.removeEventListener(MouseEvent.MOUSE_MOVE,drawing);
stage.removeEventListener(MouseEvent.MOUSE_UP,stopDraw);
}
function drawing(e:MouseEvent):void {
mc.graphics.lineTo(mouseX,mouseY);
if (action==1) {
  content.draw(mc,new Matrix(),new ColorTransform(),BlendMode.ERASE);
}
e.updateAfterEvent();
}
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=1717290
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

喜歡★qupyqupy 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:俠客英雄傳... 後一篇:(stage.width...

追蹤私訊

作品資料夾

face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】