※現在、「wonderfl build flash online」求人コンテンツ制作に関してのアンケートを実施中です!みなさまのお力添えを頂いて、続々とアンケート結果が集まっていますが、まだまだ募集しております。ご協力のほど、どうぞよろしくお願いいたします!

wonderfl運営事務局
→アンケートページ(※ログインしてからお答えいただけるようになっています。)

 notice: Flash editor updated! Join the development! Thanks to MiniBuilder


FORKED
  1. // forked from trick7's わかめペン簡易版
  2. // forked from trick7's code on 2008-12-18
  3. package  {
  4.     import flash.display.Bitmap;
  5.     import flash.display.BitmapData;
  6.     import flash.display.BlendMode;
  7.     import flash.display.Sprite;
  8.     import flash.filters.ColorMatrixFilter;
  9.     import flash.filters.ConvolutionFilter;
  10.     import flash.filters.DisplacementMapFilter;
  11.     import flash.geom.ColorTransform;
  12.     import flash.geom.Matrix;
  13.     import flash.events.Event;
  14.     import flash.events.MouseEvent;
  15.     import flash.geom.Point;
  16.     import flash.geom.Rectangle;
  17.     [SWF(backgroundColor="0x000000", frameRate="60")]
  18.     public class WakamePenWonderFl extends Sprite{
  19.         private var _sp:Sprite;
  20.         private var _drawingBoard:Sprite;
  21.         private var _drawingStockBMD:BitmapData;
  22.         private var _drawingStock:Bitmap;
  23.         private var _baseBmpd:BitmapData;
  24.         private var _viewBm:Bitmap;
  25.         private var _displaceImage:BitmapData;
  26.         private var _clrMatrix:ColorMatrixFilter;
  27.         private var _seed:Number = Math.random();
  28.         private var _offsets:Array = [new Point(), new Point()];
  29.         private var _mousedown:Boolean = false;
  30.         public function WakamePenWonderFl() {
  31.             _sp = new Sprite();
  32.             _drawingBoard = new Sprite();
  33.             //ペンの太さと初期色
  34.             _drawingBoard.graphics.lineStyle(5, 0x00ffffff);
  35.             
  36.             addChild(_sp);
  37.             addEventListener(Event.ENTER_FRAME, run);
  38.             stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownListener);
  39.             stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUpListener);
  40.             
  41.             //描画スプライトのストック用ビットマップ。背景はアルファ0
  42.             _drawingStockBMD =  new BitmapData(stage.stageWidth, stage.stageHeight, true, 0x00000000);
  43.             _drawingStock = new Bitmap(_drawingStockBMD);
  44.             _sp.addChild(_drawingStock)
  45.             _sp.addChild(_drawingBoard);
  46.             
  47.             //表示用bitmap
  48.             _baseBmpd = new BitmapData(stage.stageWidth, stage.stageHeight, false, 0xff000000);
  49.             _viewBm = new Bitmap(_baseBmpd,"auto",true);
  50.             _viewBm.blendMode = BlendMode.SCREEN;
  51.             addChild(_viewBm);
  52.             
  53.             _displaceImage = new BitmapData(stage.stageWidth, stage.stageHeight, false, 0xFFFFFFFF);
  54.             
  55.             
  56.             //消去ボタン
  57.             var btn:Sprite = new Sprite();
  58.             btn.graphics.beginFill(0x666666);
  59.             btn.graphics.drawCircle(202015);
  60.             btn.buttonMode = true;
  61.             addChild(btn);
  62.             btn.addEventListener(MouseEvent.CLICK, onEraceListener);
  63.         }
  64.         private function run(e:Event):void {
  65.             if (_mousedown) {
  66.                 _drawingBoard.graphics.lineStyle(5,Math.random()*0xffffff)
  67.                 _drawingBoard.graphics.lineTo(mouseX, mouseY);
  68.             }
  69.             //置き換えマップを動かす。
  70.             for(var i:int = 0; i < 2; ++i){
  71.                 _offsets[i].x += 5//X方向
  72.                 _offsets[i].y += 1//Y方向
  73.             }
  74.             //もやもやした白黒画像を生成
  75.             _displaceImage.perlinNoise(50801, _seed, falsetrue1true, _offsets);
  76.             
  77.             var f:DisplacementMapFilter = new DisplacementMapFilter(_displaceImage, null111020"color", 0x0);
  78.             //displacementMapFilter
  79.             _baseBmpd.applyFilter(_baseBmpd,new Rectangle(0,0,_baseBmpd.width,_baseBmpd.height),new Point(0,0),f);
  80.             //convolutionFilter
  81.             _baseBmpd.applyFilter(_baseBmpd,new Rectangle(0,0,_baseBmpd.width,_baseBmpd.height),new Point(0,0),set_cf());
  82.             
  83.             //描画(ここをコメントアウトするとわかめフィルタ効果をオフにできる。完全に切るときは上の該当処理も消すこと。)
  84.             _baseBmpd.draw(_sp);
  85.         }
  86.         private function set_cf():ConvolutionFilter{//ConvolutionFilter
  87.         
  88.         var m1:Number = 1var m2:Number = 0var m3:Number = 0
  89.         var m4:Number = 1var m5:Number = 1var m6:Number = 1;
  90.         var m7:Number = 0var m8:Number = 0var m9:Number = 0;
  91.         var ma:Number = .3;
  92.         var mt:Number = m1 + m2 +m3 + m4 +m5 + m6 +m7 + m8 +m9 + ma;
  93.         
  94.         var cf:ConvolutionFilter = new ConvolutionFilter(3,3,                                                        [m1,m2,m3,                                                             m4,m5,m6,                                                         m7,m8,m9                                                         ],mt,0,false);
  95.                                                                  
  96.             return cf;
  97.         }
  98.         private function onMouseDownListener(event:MouseEvent):void {
  99.             _mousedown = true;
  100.             //ペン先を移動。+1しているのは点が描けるようにする処理
  101.             _drawingBoard.graphics.moveTo(mouseX, mouseY+1 ); 
  102.         }
  103.         private function onMouseUpListener(event:MouseEvent):void {
  104.             _mousedown = false;
  105.             //lineTo で描画されたグラフィックをキャプチャ
  106.             _drawingStockBMD.draw(_drawingBoard);
  107.             //キャプチャ後、ラインは不要なのでクリアしておく
  108.             _drawingBoard.graphics.clear();
  109.         }
  110.         private function onEraceListener(event:MouseEvent):void {
  111.             //キャプチャ用ビットマップをクリア
  112.             _drawingStockBMD.fillRect(new Rectangle(0,0,stage.stageWidth, stage.stageHeight),0x000000);
  113.             _drawingBoard.graphics.clear();
  114.         }
  115.     }
  116. }
noswf
  1. // forked from trick7's わかめペン簡易版
  2. // forked from trick7's code on 2008-12-18
  3. package  {
  4.     import flash.display.Bitmap;
  5.     import flash.display.BitmapData;
  6.     import flash.display.BlendMode;
  7.     import flash.display.Sprite;
  8.     import flash.filters.ColorMatrixFilter;
  9.     import flash.filters.ConvolutionFilter;
  10.     import flash.filters.DisplacementMapFilter;
  11.     import flash.geom.ColorTransform;
  12.     import flash.geom.Matrix;
  13.     import flash.events.Event;
  14.     import flash.events.MouseEvent;
  15.     import flash.geom.Point;
  16.     import flash.geom.Rectangle;
  17.     [SWF(backgroundColor="0x000000", frameRate="60")]
  18.     public class WakamePenWonderFl extends Sprite{
  19.         private var _sp:Sprite;
  20.         private var _drawingBoard:Sprite;
  21.         private var _drawingStockBMD:BitmapData;
  22.         private var _drawingStock:Bitmap;
  23.         private var _baseBmpd:BitmapData;
  24.         private var _viewBm:Bitmap;
  25.         private var _displaceImage:BitmapData;
  26.         private var _clrMatrix:ColorMatrixFilter;
  27.         private var _seed:Number = Math.random();
  28.         private var _offsets:Array = [new Point(), new Point()];
  29.         private var _mousedown:Boolean = false;
  30.         public function WakamePenWonderFl() {
  31.             _sp = new Sprite();
  32.             _drawingBoard = new Sprite();
  33.             //ペンの太さと初期色
  34.             _drawingBoard.graphics.lineStyle(5, 0x00ffffff);
  35.             
  36.             addChild(_sp);
  37.             addEventListener(Event.ENTER_FRAME, run);
  38.             stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownListener);
  39.             stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUpListener);
  40.             
  41.             //描画スプライトのストック用ビットマップ。背景はアルファ0
  42.             _drawingStockBMD =  new BitmapData(stage.stageWidth, stage.stageHeight, true, 0x00000000);
  43.             _drawingStock = new Bitmap(_drawingStockBMD);
  44.             _sp.addChild(_drawingStock)
  45.             _sp.addChild(_drawingBoard);
  46.             
  47.             //表示用bitmap
  48.             _baseBmpd = new BitmapData(stage.stageWidth, stage.stageHeight, false, 0xff000000);
  49.             _viewBm = new Bitmap(_baseBmpd,"auto",true);
  50.             _viewBm.blendMode = BlendMode.SCREEN;
  51.             addChild(_viewBm);
  52.             
  53.             _displaceImage = new BitmapData(stage.stageWidth, stage.stageHeight, false, 0xFFFFFFFF);
  54.             
  55.             
  56.             //消去ボタン
  57.             var btn:Sprite = new Sprite();
  58.             btn.graphics.beginFill(0x666666);
  59.             btn.graphics.drawCircle(202015);
  60.             btn.buttonMode = true;
  61.             addChild(btn);
  62.             btn.addEventListener(MouseEvent.CLICK, onEraceListener);
  63.         }
  64.         private function run(e:Event):void {
  65.             if (_mousedown) {
  66.                 _drawingBoard.graphics.lineStyle(5,Math.random()*0xffffff)
  67.                 _drawingBoard.graphics.lineTo(mouseX, mouseY);
  68.             }
  69.             //置き換えマップを動かす。
  70.             for(var i:int = 0; i < 2; ++i){
  71.                 _offsets[i].x += 5//X方向
  72.                 _offsets[i].y += 1//Y方向
  73.             }
  74.             //もやもやした白黒画像を生成
  75.             _displaceImage.perlinNoise(50801, _seed, falsetrue1true, _offsets);
  76.             
  77.             var f:DisplacementMapFilter = new DisplacementMapFilter(_displaceImage, null111020"color", 0x0);
  78.             //displacementMapFilter
  79.             _baseBmpd.applyFilter(_baseBmpd,new Rectangle(0,0,_baseBmpd.width,_baseBmpd.height),new Point(0,0),f);
  80.             //convolutionFilter
  81.             _baseBmpd.applyFilter(_baseBmpd,new Rectangle(0,0,_baseBmpd.width,_baseBmpd.height),new Point(0,0),set_cf());
  82.             
  83.             //描画(ここをコメントアウトするとわかめフィルタ効果をオフにできる。完全に切るときは上の該当処理も消すこと。)
  84.             _baseBmpd.draw(_sp);
  85.         }
  86.         private function set_cf():ConvolutionFilter{//ConvolutionFilter
  87.         
  88.         var m1:Number = 1var m2:Number = 0var m3:Number = 0
  89.         var m4:Number = 1var m5:Number = 1var m6:Number = 1;
  90.         var m7:Number = 0var m8:Number = 0var m9:Number = 0;
  91.         var ma:Number = .3;
  92.         var mt:Number = m1 + m2 +m3 + m4 +m5 + m6 +m7 + m8 +m9 + ma;
  93.         
  94.         var cf:ConvolutionFilter = new ConvolutionFilter(3,3,                                                        [m1,m2,m3,                                                             m4,m5,m6,                                                         m7,m8,m9                                                         ],mt,0,false);
  95.                                                                  
  96.             return cf;
  97.         }
  98.         private function onMouseDownListener(event:MouseEvent):void {
  99.             _mousedown = true;
  100.             //ペン先を移動。+1しているのは点が描けるようにする処理
  101.             _drawingBoard.graphics.moveTo(mouseX, mouseY+1 ); 
  102.         }
  103.         private function onMouseUpListener(event:MouseEvent):void {
  104.             _mousedown = false;
  105.             //lineTo で描画されたグラフィックをキャプチャ
  106.             _drawingStockBMD.draw(_drawingBoard);
  107.             //キャプチャ後、ラインは不要なのでクリアしておく
  108.             _drawingBoard.graphics.clear();
  109.         }
  110.         private function onEraceListener(event:MouseEvent):void {
  111.             //キャプチャ用ビットマップをクリア
  112.             _drawingStockBMD.fillRect(new Rectangle(0,0,stage.stageWidth, stage.stageHeight),0x000000);
  113.             _drawingBoard.graphics.clear();
  114.         }
  115.     }
  116. }
noswf
  1. // forked from trick7's わかめペン簡易版
  2. // forked from trick7's code on 2008-12-18
  3. package  {
  4.     import flash.display.Bitmap;
  5.     import flash.display.BitmapData;
  6.     import flash.display.BlendMode;
  7.     import flash.display.Sprite;
  8.     import flash.filters.ColorMatrixFilter;
  9.     import flash.filters.ConvolutionFilter;
  10.     import flash.filters.DisplacementMapFilter;
  11.     import flash.geom.ColorTransform;
  12.     import flash.geom.Matrix;
  13.     import flash.events.Event;
  14.     import flash.events.MouseEvent;
  15.     import flash.geom.Point;
  16.     import flash.geom.Rectangle;
  17.     [SWF(backgroundColor="0x000000", frameRate="60")]
  18.     public class WakamePenWonderFl extends Sprite{
  19.         private var _sp:Sprite;
  20.         private var _drawingBoard:Sprite;
  21.         private var _drawingStockBMD:BitmapData;
  22.         private var _drawingStock:Bitmap;
  23.         private var _baseBmpd:BitmapData;
  24.         private var _viewBm:Bitmap;
  25.         private var _displaceImage:BitmapData;
  26.         private var _clrMatrix:ColorMatrixFilter;
  27.         private var _seed:Number = Math.random();
  28.         private var _offsets:Array = [new Point(), new Point()];
  29.         private var _mousedown:Boolean = false;
  30.         public function WakamePenWonderFl() {
  31.             _sp = new Sprite();
  32.             _drawingBoard = new Sprite();
  33.             //ペンの太さと初期色
  34.             _drawingBoard.graphics.lineStyle(5, 0x00ffffff);
  35.             
  36.             addChild(_sp);
  37.             addEventListener(Event.ENTER_FRAME, run);
  38.             stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownListener);
  39.             stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUpListener);
  40.             
  41.             //描画スプライトのストック用ビットマップ。背景はアルファ0
  42.             _drawingStockBMD =  new BitmapData(stage.stageWidth, stage.stageHeight, true, 0x00000000);
  43.             _drawingStock = new Bitmap(_drawingStockBMD);
  44.             _sp.addChild(_drawingStock)
  45.             _sp.addChild(_drawingBoard);
  46.             
  47.             //表示用bitmap
  48.             _baseBmpd = new BitmapData(stage.stageWidth, stage.stageHeight, false, 0xff000000);
  49.             _viewBm = new Bitmap(_baseBmpd,"auto",true);
  50.             _viewBm.blendMode = BlendMode.SCREEN;
  51.             addChild(_viewBm);
  52.             
  53.             _displaceImage = new BitmapData(stage.stageWidth, stage.stageHeight, false, 0xFFFFFFFF);
  54.             
  55.             
  56.             //消去ボタン
  57.             var btn:Sprite = new Sprite();
  58.             btn.graphics.beginFill(0x666666);
  59.             btn.graphics.drawCircle(202015);
  60.             btn.buttonMode = true;
  61.             addChild(btn);
  62.             btn.addEventListener(MouseEvent.CLICK, onEraceListener);
  63.         }
  64.         private function run(e:Event):void {
  65.             if (_mousedown) {
  66.                 _drawingBoard.graphics.lineStyle(5,Math.random()*0xffffff)
  67.                 _drawingBoard.graphics.lineTo(mouseX, mouseY);
  68.             }
  69.             //置き換えマップを動かす。
  70.             for(var i:int = 0; i < 2; ++i){
  71.                 _offsets[i].x += 5//X方向
  72.                 _offsets[i].y += 1//Y方向
  73.             }
  74.             //もやもやした白黒画像を生成
  75.             _displaceImage.perlinNoise(50801, _seed, falsetrue1true, _offsets);
  76.             
  77.             var f:DisplacementMapFilter = new DisplacementMapFilter(_displaceImage, null111020"color", 0x0);
  78.             //displacementMapFilter
  79.             _baseBmpd.applyFilter(_baseBmpd,new Rectangle(0,0,_baseBmpd.width,_baseBmpd.height),new Point(0,0),f);
  80.             //convolutionFilter
  81.             _baseBmpd.applyFilter(_baseBmpd,new Rectangle(0,0,_baseBmpd.width,_baseBmpd.height),new Point(0,0),set_cf());
  82.             
  83.             //描画(ここをコメントアウトするとわかめフィルタ効果をオフにできる。完全に切るときは上の該当処理も消すこと。)
  84.             _baseBmpd.draw(_sp);
  85.         }
  86.         private function set_cf():ConvolutionFilter{//ConvolutionFilter
  87.         
  88.         var m1:Number = 1var m2:Number = 0var m3:Number = 0
  89.         var m4:Number = 1var m5:Number = 1var m6:Number = 1;
  90.         var m7:Number = 0var m8:Number = 0var m9:Number = 0;
  91.         var ma:Number = .3;
  92.         var mt:Number = m1 + m2 +m3 + m4 +m5 + m6 +m7 + m8 +m9 + ma;
  93.         
  94.         var cf:ConvolutionFilter = new ConvolutionFilter(3,3,                                                        [m1,m2,m3,                                                             m4,m5,m6,                                                         m7,m8,m9                                                         ],mt,0,false);
  95.                                                                  
  96.             return cf;
  97.         }
  98.         private function onMouseDownListener(event:MouseEvent):void {
  99.             _mousedown = true;
  100.             //ペン先を移動。+1しているのは点が描けるようにする処理
  101.             _drawingBoard.graphics.moveTo(mouseX, mouseY+1 ); 
  102.         }
  103.         private function onMouseUpListener(event:MouseEvent):void {
  104.             _mousedown = false;
  105.             //lineTo で描画されたグラフィックをキャプチャ
  106.             _drawingStockBMD.draw(_drawingBoard);
  107.             //キャプチャ後、ラインは不要なのでクリアしておく
  108.             _drawingBoard.graphics.clear();
  109.         }
  110.         private function onEraceListener(event:MouseEvent):void {
  111.             //キャプチャ用ビットマップをクリア
  112.             _drawingStockBMD.fillRect(new Rectangle(0,0,stage.stageWidth, stage.stageHeight),0x000000);
  113.             _drawingBoard.graphics.clear();
  114.         }
  115.     }
  116. }
noswf
  1. // forked from trick7's わかめペン簡易版
  2. // forked from trick7's code on 2008-12-18
  3. package  {
  4.     import flash.display.Bitmap;
  5.     import flash.display.BitmapData;
  6.     import flash.display.BlendMode;
  7.     import flash.display.Sprite;
  8.     import flash.filters.ColorMatrixFilter;
  9.     import flash.filters.ConvolutionFilter;
  10.     import flash.filters.DisplacementMapFilter;
  11.     import flash.geom.ColorTransform;
  12.     import flash.geom.Matrix;
  13.     import flash.events.Event;
  14.     import flash.events.MouseEvent;
  15.     import flash.geom.Point;
  16.     import flash.geom.Rectangle;
  17.     [SWF(backgroundColor="0x000000", frameRate="60")]
  18.     public class WakamePenWonderFl extends Sprite{
  19.         private var _sp:Sprite;
  20.         private var _drawingBoard:Sprite;
  21.         private var _drawingStockBMD:BitmapData;
  22.         private var _drawingStock:Bitmap;
  23.         private var _baseBmpd:BitmapData;
  24.         private var _viewBm:Bitmap;
  25.         private var _displaceImage:BitmapData;
  26.         private var _clrMatrix:ColorMatrixFilter;
  27.         private var _seed:Number = Math.random();
  28.         private var _offsets:Array = [new Point(), new Point()];
  29.         private var _mousedown:Boolean = false;
  30.         public function WakamePenWonderFl() {
  31.             _sp = new Sprite();
  32.             _drawingBoard = new Sprite();
  33.             //ペンの太さと初期色
  34.             _drawingBoard.graphics.lineStyle(5, 0x00ffffff);
  35.             
  36.             addChild(_sp);
  37.             addEventListener(Event.ENTER_FRAME, run);
  38.             stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownListener);
  39.             stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUpListener);
  40.             
  41.             //描画スプライトのストック用ビットマップ。背景はアルファ0
  42.             _drawingStockBMD =  new BitmapData(stage.stageWidth, stage.stageHeight, true, 0x00000000);
  43.             _drawingStock = new Bitmap(_drawingStockBMD);
  44.             _sp.addChild(_drawingStock)
  45.             _sp.addChild(_drawingBoard);
  46.             
  47.             //表示用bitmap
  48.             _baseBmpd = new BitmapData(stage.stageWidth, stage.stageHeight, false, 0xff000000);
  49.             _viewBm = new Bitmap(_baseBmpd,"auto",true);
  50.             _viewBm.blendMode = BlendMode.SCREEN;
  51.             addChild(_viewBm);
  52.             
  53.             _displaceImage = new BitmapData(stage.stageWidth, stage.stageHeight, false, 0xFFFFFFFF);
  54.             
  55.             
  56.             //消去ボタン
  57.             var btn:Sprite = new Sprite();
  58.             btn.graphics.beginFill(0x666666);
  59.             btn.graphics.drawCircle(202015);
  60.             btn.buttonMode = true;
  61.             addChild(btn);
  62.             btn.addEventListener(MouseEvent.CLICK, onEraceListener);
  63.         }
  64.         private function run(e:Event):void {
  65.             if (_mousedown) {
  66.                 _drawingBoard.graphics.lineStyle(5,Math.random()*0xffffff)
  67.                 _drawingBoard.graphics.lineTo(mouseX, mouseY);
  68.             }
  69.             //置き換えマップを動かす。
  70.             for(var i:int = 0; i < 2; ++i){
  71.                 _offsets[i].x += 5//X方向
  72.                 _offsets[i].y += 1//Y方向
  73.             }
  74.             //もやもやした白黒画像を生成
  75.             _displaceImage.perlinNoise(50801, _seed, falsetrue1true, _offsets);
  76.             
  77.             var f:DisplacementMapFilter = new DisplacementMapFilter(_displaceImage, null111020"color", 0x0);
  78.             //displacementMapFilter
  79.             _baseBmpd.applyFilter(_baseBmpd,new Rectangle(0,0,_baseBmpd.width,_baseBmpd.height),new Point(0,0),f);
  80.             //convolutionFilter
  81.             _baseBmpd.applyFilter(_baseBmpd,new Rectangle(0,0,_baseBmpd.width,_baseBmpd.height),new Point(0,0),set_cf());
  82.             
  83.             //描画(ここをコメントアウトするとわかめフィルタ効果をオフにできる。完全に切るときは上の該当処理も消すこと。)
  84.             _baseBmpd.draw(_sp);
  85.         }
  86.         private function set_cf():ConvolutionFilter{//ConvolutionFilter
  87.         
  88.         var m1:Number = 1var m2:Number = 0var m3:Number = 0
  89.         var m4:Number = 1var m5:Number = 1var m6:Number = 1;
  90.         var m7:Number = 0var m8:Number = 0var m9:Number = 0;
  91.         var ma:Number = .3;
  92.         var mt:Number = m1 + m2 +m3 + m4 +m5 + m6 +m7 + m8 +m9 + ma;
  93.         
  94.         var cf:ConvolutionFilter = new ConvolutionFilter(3,3,                                                        [m1,m2,m3,                                                             m4,m5,m6,                                                         m7,m8,m9                                                         ],mt,0,false);
  95.                                                                  
  96.             return cf;
  97.         }
  98.         private function onMouseDownListener(event:MouseEvent):void {
  99.             _mousedown = true;
  100.             //ペン先を移動。+1しているのは点が描けるようにする処理
  101.             _drawingBoard.graphics.moveTo(mouseX, mouseY+1 ); 
  102.         }
  103.         private function onMouseUpListener(event:MouseEvent):void {
  104.             _mousedown = false;
  105.             //lineTo で描画されたグラフィックをキャプチャ
  106.             _drawingStockBMD.draw(_drawingBoard);
  107.             //キャプチャ後、ラインは不要なのでクリアしておく
  108.             _drawingBoard.graphics.clear();
  109.         }
  110.         private function onEraceListener(event:MouseEvent):void {
  111.             //キャプチャ用ビットマップをクリア
  112.             _drawingStockBMD.fillRect(new Rectangle(0,0,stage.stageWidth, stage.stageHeight),0x000000);
  113.             _drawingBoard.graphics.clear();
  114.         }
  115.     }
  116. }
noswf
  1. // forked from trick7's わかめペン簡易版
  2. // forked from trick7's code on 2008-12-18
  3. package  {
  4.     import flash.display.Bitmap;
  5.     import flash.display.BitmapData;
  6.     import flash.display.BlendMode;
  7.     import flash.display.Sprite;
  8.     import flash.filters.ColorMatrixFilter;
  9.     import flash.filters.ConvolutionFilter;
  10.     import flash.filters.DisplacementMapFilter;
  11.     import flash.geom.ColorTransform;
  12.     import flash.geom.Matrix;
  13.     import flash.events.Event;
  14.     import flash.events.MouseEvent;
  15.     import flash.geom.Point;
  16.     import flash.geom.Rectangle;
  17.     [SWF(backgroundColor="0x000000", frameRate="60")]
  18.     public class WakamePenWonderFl extends Sprite{
  19.         private var _sp:Sprite;
  20.         private var _drawingBoard:Sprite;
  21.         private var _drawingStockBMD:BitmapData;
  22.         private var _drawingStock:Bitmap;
  23.         private var _baseBmpd:BitmapData;
  24.         private var _viewBm:Bitmap;
  25.         private var _displaceImage:BitmapData;
  26.         private var _clrMatrix:ColorMatrixFilter;
  27.         private var _seed:Number = Math.random();
  28.         private var _offsets:Array = [new Point(), new Point()];
  29.         private var _mousedown:Boolean = false;
  30.         public function WakamePenWonderFl() {
  31.             _sp = new Sprite();
  32.             _drawingBoard = new Sprite();
  33.             //ペンの太さと初期色
  34.             _drawingBoard.graphics.lineStyle(5, 0x00ffffff);
  35.             
  36.             addChild(_sp);
  37.             addEventListener(Event.ENTER_FRAME, run);
  38.             stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownListener);
  39.             stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUpListener);
  40.             
  41.             //描画スプライトのストック用ビットマップ。背景はアルファ0
  42.             _drawingStockBMD =  new BitmapData(stage.stageWidth, stage.stageHeight, true, 0x00000000);
  43.             _drawingStock = new Bitmap(_drawingStockBMD);
  44.             _sp.addChild(_drawingStock)
  45.             _sp.addChild(_drawingBoard);
  46.             
  47.             //表示用bitmap
  48.             _baseBmpd = new BitmapData(stage.stageWidth, stage.stageHeight, false, 0xff000000);
  49.             _viewBm = new Bitmap(_baseBmpd,"auto",true);
  50.             _viewBm.blendMode = BlendMode.SCREEN;
  51.             addChild(_viewBm);
  52.             
  53.             _displaceImage = new BitmapData(stage.stageWidth, stage.stageHeight, false, 0xFFFFFFFF);
  54.             
  55.             
  56.             //消去ボタン
  57.             var btn:Sprite = new Sprite();
  58.             btn.graphics.beginFill(0x666666);
  59.             btn.graphics.drawCircle(202015);
  60.             btn.buttonMode = true;
  61.             addChild(btn);
  62.             btn.addEventListener(MouseEvent.CLICK, onEraceListener);
  63.         }
  64.         private function run(e:Event):void {
  65.             if (_mousedown) {
  66.                 _drawingBoard.graphics.lineStyle(5,Math.random()*0xffffff)
  67.                 _drawingBoard.graphics.lineTo(mouseX, mouseY);
  68.             }
  69.             //置き換えマップを動かす。
  70.             for(var i:int = 0; i < 2; ++i){
  71.                 _offsets[i].x += 5//X方向
  72.                 _offsets[i].y += 1//Y方向
  73.             }
  74.             //もやもやした白黒画像を生成
  75.             _displaceImage.perlinNoise(50801, _seed, falsetrue1true, _offsets);
  76.             
  77.             var f:DisplacementMapFilter = new DisplacementMapFilter(_displaceImage, null111020"color", 0x0);
  78.             //displacementMapFilter
  79.             _baseBmpd.applyFilter(_baseBmpd,new Rectangle(0,0,_baseBmpd.width,_baseBmpd.height),new Point(0,0),f);
  80.             //convolutionFilter
  81.             _baseBmpd.applyFilter(_baseBmpd,new Rectangle(0,0,_baseBmpd.width,_baseBmpd.height),new Point(0,0),set_cf());
  82.             
  83.             //描画(ここをコメントアウトするとわかめフィルタ効果をオフにできる。完全に切るときは上の該当処理も消すこと。)
  84.             _baseBmpd.draw(_sp);
  85.         }
  86.         private function set_cf():ConvolutionFilter{//ConvolutionFilter
  87.         
  88.         var m1:Number = 1var m2:Number = 0var m3:Number = 0
  89.         var m4:Number = 1var m5:Number = 1var m6:Number = 1;
  90.         var m7:Number = 0var m8:Number = 0var m9:Number = 0;
  91.         var ma:Number = .3;
  92.         var mt:Number = m1 + m2 +m3 + m4 +m5 + m6 +m7 + m8 +m9 + ma;
  93.         
  94.         var cf:ConvolutionFilter = new ConvolutionFilter(3,3,                                                        [m1,m2,m3,                                                             m4,m5,m6,                                                         m7,m8,m9                                                         ],mt,0,false);
  95.                                                                  
  96.             return cf;
  97.         }
  98.         private function onMouseDownListener(event:MouseEvent):void {
  99.             _mousedown = true;
  100.             //ペン先を移動。+1しているのは点が描けるようにする処理
  101.             _drawingBoard.graphics.moveTo(mouseX, mouseY+1 ); 
  102.         }
  103.         private function onMouseUpListener(event:MouseEvent):void {
  104.             _mousedown = false;
  105.             //lineTo で描画されたグラフィックをキャプチャ
  106.             _drawingStockBMD.draw(_drawingBoard);
  107.             //キャプチャ後、ラインは不要なのでクリアしておく
  108.             _drawingBoard.graphics.clear();
  109.         }
  110.         private function onEraceListener(event:MouseEvent):void {
  111.             //キャプチャ用ビットマップをクリア
  112.             _drawingStockBMD.fillRect(new Rectangle(0,0,stage.stageWidth, stage.stageHeight),0x000000);
  113.             _drawingBoard.graphics.clear();
  114.         }
  115.     }
  116. }
noswf
Get Adobe Flash Player