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

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

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


FORKED

BitmapDataのチャネルを入れ替えるのはどうやれば高速か? ColorMatrixFilterとColorTransformはどっちが速い? [diff(28)]

  1. // [実験] ColorMatrixFilterとColorTransformはどっちが速い?
  2. package {
  3. import flash.display.*;
  4. import flash.filters.*;
  5. import flash.geom.*;
  6. import flash.text.*;
  7. import flash.utils.*;
  8. public class Main extends Sprite
  9. {
  10.     private var _src:BitmapData;
  11.     private var _dst:BitmapData;
  12.     private var _rect:Rectangle;
  13.     private var _zero:Point;
  14.     
  15.     //ColorMatrixFilter
  16.     private var _cmf:ColorMatrixFilter;
  17.     
  18.     //ColorTransform
  19.     private var _ctf:ColorTransform;
  20.     
  21.     public function Main():void
  22.     {
  23.         _src = new BitmapData(500500false, 0x0);
  24.         _src.noise(1);
  25.         _dst = new BitmapData(500500false, 0x0);
  26.         _rect = new Rectangle(00500500);
  27.         _zero = new Point(00);
  28.         
  29.         //scale 10
  30.         _cmf = new ColorMatrixFilter([
  31.             100 , 0 ,  010,
  32.             0 , 100 ,  010,
  33.             0 , 0 , 10,  010,
  34.             0 , 0 , 0 , 1010
  35.         ]);
  36.         _ctf = new ColorTransform(1010101010101010);
  37.         
  38.         _setup();
  39.         
  40.         _measure("ColorMatrixFilter"function ():void
  41.         {
  42.             _dst.applyFilter(_src, _rect, _zero, _cmf);
  43.             
  44.         }, 100);
  45.         
  46.         _measure("ColorTransform"function ():void
  47.         {
  48.             _dst.draw(_src, null, _ctf);
  49.             
  50.         }, 100);
  51.     }
  52.     
  53.     private function _measure(
  54.         title:String, func:Function, numTimes:uint, ...params):void
  55.     {
  56.         _time = getTimer();
  57.         
  58.         for (var i:int = 0; i < numTimes; i++) {
  59.             func.apply(null, params);
  60.         }
  61.         
  62.         _time = getTimer() - _time;
  63.         
  64.         _debug("[ " + title + " ] --> " + _time + " ms");
  65.     }
  66.     
  67.     private function _debug(log:String):void
  68.     {
  69.         _field.appendText(log + "\n");
  70.     }
  71.     
  72.     private var _field:TextField;
  73.     private var _time:uint;
  74.     
  75.     private function _setup():void
  76.     {
  77.         _field = new TextField();
  78.         _field.width = stage.stageWidth;
  79.         _field.height = stage.stageHeight;
  80.         
  81.         var format:TextFormat = _field.defaultTextFormat;
  82.         format.font = "_sans";
  83.         _field.defaultTextFormat = format;
  84.         
  85.         addChild(_field);
  86.     }
  87. }
  88. }
noswf
Get Adobe Flash Player