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

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

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


FORKED
  1. // forked from kazya's forked from: forked from: Ripple01
  2. // forked from alumican_net's forked from: Ripple01
  3. // forked from shotaicho's Ripple01
  4. //-----------------------------------------------------
  5. // title : Ripple
  6. // 波紋効果の練習
  7. //-----------------------------------------------------
  8. package 
  9. {
  10.     import flash.display.Bitmap;
  11.     import flash.display.BitmapData;
  12.     import flash.display.BitmapDataChannel;
  13.     import flash.display.BlendMode;
  14.     import flash.display.Loader;
  15.     import flash.display.Sprite;
  16.     import flash.display.StageQuality;
  17.     import flash.events.Event;
  18.     import flash.events.MouseEvent;
  19.     import flash.filters.ConvolutionFilter;
  20.     import flash.filters.DisplacementMapFilter;
  21.     import flash.filters.DisplacementMapFilterMode;
  22.     import flash.geom.ColorTransform;
  23.     import flash.geom.Matrix;
  24.     import flash.geom.Point;
  25.     import flash.geom.Rectangle;
  26.     import flash.net.URLRequest;
  27.     import flash.system.LoaderContext; 
  28.     
  29.     [SWF(backgroundColor="0x000000", frameRate="30")]
  30.     public class AnimationsProject extends Sprite
  31.     {
  32.         
  33.        
  34.         private const IMAGE_URL:String = "http://www.chutaicho.com/image/leafs.jpg";
  35.         private const RIPPLE_SIZE:int = 10//波紋サイズ
  36.         private const BUFFER_SCALE:Number = 0.2//バッファ用ビットマップのサイズ
  37.         
  38.         private var _sample:Bitmap;
  39.         private var _buffer1:BitmapData;
  40.         private var _buffer2:BitmapData;
  41.         private var _defData:BitmapData;
  42.         private var _scale:Number;
  43.         private var _matrix:Matrix; 
  44.         private var _fullRect:Rectangle;
  45.         private var _drawRect:Rectangle;
  46.         private var _origin:Point;
  47.         private var _filter:DisplacementMapFilter;
  48.         private var _convoFilter:ConvolutionFilter;
  49.         private var _colorTransform:ColorTransform;
  50.     private var _debug:BitmapData;
  51.     
  52.         public function AnimationsProject()
  53.         {
  54.             init();
  55.         }    
  56.         private function init():void
  57.         {
  58.             stage.quality = StageQuality.MEDIUM;
  59.             var req:URLRequest = new URLRequest(IMAGE_URL);
  60.             var loader:Loader = new Loader();
  61.             loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);    
  62.             loader.load( req, new LoaderContext(true));
  63.         }
  64.         private function loadComplete(e:Event):void
  65.         {    
  66.             e.target.removeEventListener(Event.COMPLETE, loadComplete);
  67.             var sw:int = stage.stageWidth;
  68.             var sh:int = stage.stageHeight;
  69.             
  70.             // 読み込んだ画像を一旦リサイズ
  71.             var source:Bitmap = e.target.loader.content as Bitmap;
  72.             var resizeData:BitmapData = new BitmapData(sw, sh);
  73.             source.width = sw;
  74.             source.height = sh;
  75.             resizeData.draw( source );
  76.             _sample = new Bitmap(resizeData);
  77.             addChild(_sample);
  78.             
  79.             // ちょっと傾ける
  80.             rotationX = -30;
  81.             
  82.             
  83.             
  84.             _buffer1 = new BitmapData(_sample.width*BUFFER_SCALE, _sample.height*BUFFER_SCALE, false, 0x000000);
  85.             _buffer2 = new BitmapData(_buffer1.width, _buffer1.height, false, 0x000000);
  86.             _defData = new BitmapData(_sample.width, _sample.height, false, 0x7f7f7f);
  87.             
  88.            
  89.             _fullRect = new Rectangle(00, _buffer1.width, _buffer1.height);
  90.             _drawRect = new Rectangle();
  91.             
  92.             _filter = new DisplacementMapFilter(_buffer1, new Point(), BitmapDataChannel.BLUE, BitmapDataChannel.BLUE, 5050, DisplacementMapFilterMode.WRAP);
  93.             _sample.filters = [_filter];
  94.         
  95.             addEventListener(Event.ENTER_FRAME, enterFrameHandler);
  96.         
  97.             _convoFilter = new ConvolutionFilter(33, [0.510.51010.510.5], 3);
  98.             _colorTransform = new ColorTransform(11110128128);       
  99.             _matrix = new Matrix(_defData.width/_buffer1.width, 00, _defData.height/_buffer1.height);
  100.             
  101.             _debug = new BitmapData(_sample.width, _sample.height, false, 0x000000);
  102.          //   addChild(new Bitmap(_debug));
  103.             
  104.                          stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseHandler);
  105.         }
  106.         private function mouseHandler(e:MouseEvent):void
  107.         {
  108.             var rad:int = RIPPLE_SIZE/2 * -1;
  109.             _drawRect.x = ( rad + _sample.mouseX ) * BUFFER_SCALE;    
  110.             _drawRect.y = ( rad + _sample.mouseY ) * BUFFER_SCALE;
  111.             _drawRect.width = _drawRect.height = RIPPLE_SIZE * BUFFER_SCALE;
  112.             _buffer1.fillRect(_drawRect, 0xFF);
  113.         }
  114.         private function enterFrameHandler(event : Event) : void
  115.         {
  116.             var temp:BitmapData = _buffer2.clone();
  117.             _buffer2.applyFilter(_buffer1, _fullRect, new Point(), _convoFilter);
  118.             _buffer2.draw(temp, nullnull, BlendMode.SUBTRACT, nullfalse);
  119.             _defData.draw(_buffer2, _matrix, _colorTransform, nullnulltrue);
  120.             _debug = _defData;
  121.             _filter.mapBitmap = _defData;
  122.             _sample.filters = [_filter];
  123.             temp.dispose();
  124.             switchBuffers();
  125.         }
  126.         // バッファの入れ替え
  127.         private function switchBuffers():void
  128.         {
  129.             var temp : BitmapData;
  130.             temp = _buffer1;
  131.             _buffer1 = _buffer2;
  132.             _buffer2 = temp;
  133.         }
  134.     }
  135. }
noswf
Get Adobe Flash Player