源文件找不到了,反编了一份.

效果参见附件:

 
  
  1. package com.dante 
  2.     import com.greensock.*; 
  3.     import flash.display.*; 
  4.     import flash.events.*; 
  5.     import flash.filters.*; 
  6.     import flash.geom.*; 
  7.  
  8.     public class BitmapMotionEngine extends EventDispatcher 
  9.     { 
  10.         private var bitmapDataOld:BitmapData; 
  11.         private var bitmapDataNew:BitmapData; 
  12.         private var bitmapDataTarget:BitmapData; 
  13.         private var duration:Number = 1.5; 
  14.         private var tween:TweenLite; 
  15.         private var blurOld:BitmapData; 
  16.         private var blurNew:BitmapData; 
  17.         private var motionComplete:Boolean = true
  18.  
  19.         public function BitmapMotionEngine() 
  20.         { 
  21.             return
  22.         }// end function 
  23.  
  24.         public function startMotion(param1:BitmapData, param2:BitmapData, param3:BitmapData) : void 
  25.         { 
  26.             if (this.motionComplete) 
  27.             { 
  28.                 this.bitmapDataNew = param2.clone(); 
  29.                 this.bitmapDataOld = param1.clone(); 
  30.                 this.bitmapDataTarget = param3; 
  31.                 this.blurNew = this.bitmapDataNew.clone(); 
  32.                 this.blurNew.applyFilter(this.blurNew, this.blurNew.rect, new Point(), new BlurFilter(70, 70, 1)); 
  33.                 this.blurOld = this.bitmapDataOld.clone(); 
  34.                 this.blurOld.applyFilter(this.blurOld, this.blurOld.rect, new Point(), new BlurFilter(70, 70, 1)); 
  35.                 this.tween = TweenLite.to(thisthis.duration, {onUpdate:this.update, onComplete:this.onMotionComplete}); 
  36.             } 
  37.             return
  38.         }// end function 
  39.  
  40.         private function onMotionComplete() : void 
  41.         { 
  42.             this.blurNew.dispose(); 
  43.             this.blurOld.dispose(); 
  44.             this.bitmapDataNew.dispose(); 
  45.             this.bitmapDataOld.dispose(); 
  46.             this.motionComplete = true
  47.             this.dispatchEvent(new Event(Event.COMPLETE)); 
  48.             return
  49.         }// end function 
  50.  
  51.         private function update() : void 
  52.         { 
  53.             var _loc_1:* = this.tween.currentTime / this.duration; 
  54.             var _loc_2:* = new ColorTransform(1, 1, 1, _loc_1); 
  55.             this.bitmapDataOld.merge(this.blurOld, this.bitmapDataNew.rect, new Point(), _loc_1 * 256, _loc_1 * 256, _loc_1 * 256, 256); 
  56.             this.blurNew.merge(this.bitmapDataNew, this.bitmapDataOld.rect, new Point(), _loc_1 * 256, _loc_1 * 256, _loc_1 * 256, 256); 
  57.             this.bitmapDataTarget.draw(this.bitmapDataNew, nullnew ColorTransform(1, 1, 1, Math.pow(_loc_1, 2))); 
  58.             this.bitmapDataTarget.draw(this.bitmapDataOld, nullnew ColorTransform(1, 1, 1, Math.pow(1 - _loc_1, 2))); 
  59.             return
  60.         }// end function 
  61.  
  62.     }