document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. package com.shanimal.fx {
  2.    
  3.     import flash.display.BitmapData;
  4.     import flash.display.BitmapDataChannel;
  5.     import flash.events.TimerEvent;
  6.     import flash.filters.DisplacementMapFilter;
  7.     import flash.filters.DisplacementMapFilterMode;
  8.     import flash.filters.GlowFilter;
  9.     import flash.geom.Point;
  10.     import flash.utils.Timer;
  11.    
  12.     import spark.components.Image;
  13.  
  14.     public class Wave {
  15.  
  16.         // private stuff
  17.         private var _animating:Boolean = false;
  18.         private var _dmFilter:DisplacementMapFilter;
  19.         private var _originalBmpData:BitmapData;
  20.         private var _originalFilters:Array;
  21.         private var _target:*;
  22.         private var _timer:Timer = new Timer(Math.floor(1000/32));
  23.        
  24.         // constructor
  25.         public function Wave(){
  26.             _timer.addEventListener(TimerEvent.TIMER,eof);
  27.             _timer.start();
  28.         }
  29.        
  30.         // public getters/setters
  31.         /**
  32.          * releases the prior target and assigns a new target. making this a good button component for a list of <s:Image flags
  33.          *
  34.          * usage:flex <fx:Script ...
  35.          * <pre>
  36.          *   [Bindable] private var wave:Wave = new Wave();
  37.          *   private var _locale:String = "";
  38.          *
  39.          *   [Bindable]
  40.          *   private function get locale():String {
  41.          *      return _locale;
  42.          *   }
  43.          *   private function set locale(s:String):void{
  44.          *      _locale = s;
  45.          *      var defaultChain:Array = ["es_MX",LocaleID.DEFAULT];
  46.          *      var flags:Object = {
  47.          *          "en_US":{target:flagEnglish,chain:["en_US"].concat(defaultChain)},
  48.          *          "de_DE":{target:flagDeutsch,chain:["de_DE"].concat(defaultChain)},
  49.          *          "pi_RT":{target:flagPirate,chain:["pi_RT","en_GB"].concat(defaultChain)}
  50.          *      }
  51.          *      resourceManager.localeChain = flags[s].chain;
  52.          *      wave.target = flags[s].target;
  53.          *   }
  54.          * </pre>
  55.          */
  56.         [Bindable]
  57.         public function get target():* {
  58.             return _target;
  59.         }
  60.         public function set target(t:*):void{
  61.             if(t == target) return;
  62.             if(t.hasOwnProperty("bitmapData")){
  63.                 initTarget(t);
  64.             }
  65.         }
  66.        
  67.         //public methods
  68.         public function play():void{
  69.             _animating = true;
  70.         }
  71.         public function restore():void{
  72.             if(_originalBmpData && target){
  73.                 (target as Image).bitmapData.draw(_originalBmpData);
  74.                 target.filters = _originalFilters
  75.             }
  76.         }
  77.         public function stop():void{
  78.             _animating = false;
  79.         }
  80.        
  81.         // protected methods
  82.         protected function applyEffect(t:Image):void{
  83.             var mapBmd:BitmapData = t.bitmapData;
  84.             mapBmd.perlinNoise(15,30,2,0,true,false,BitmapDataChannel.RED|BitmapDataChannel.BLUE,false,[new Point(-_timer.currentCount,_timer.currentCount/100),new Point(mapBmd.rect.width,mapBmd.rect.height)]);
  85.             _dmFilter = _dmFilter || new flash.filters.DisplacementMapFilter(mapBmd, new Point(), BitmapDataChannel.RED, BitmapDataChannel.BLUE, -5, -5, DisplacementMapFilterMode.CLAMP);
  86.             _dmFilter.mapBitmap = mapBmd;
  87.             t.filters = [_dmFilter];
  88.         }
  89.         protected function eof(e:TimerEvent):void{
  90.             if(_animating && target && target.bitmapData)
  91.                 applyEffect(target);
  92.         }
  93.         protected function initTarget(t:*):void{
  94.             restore();
  95.             _target = t;
  96.             _originalBmpData = target.bitmapData.clone();
  97.             _originalFilters = target.filters;
  98.             play();
  99.         }
  100.     }
  101. }
');