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

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

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


FORKED
  1. // forked from shapevent's Sierpiński Glitch #1
  2. package {
  3.     import flash.display.*;
  4.     import flash.geom.*;
  5.     import flash.events.*;
  6.         import flash.filters.*;
  7.     [SWF(frameRate=60, backgroundColor=0x000000, width=500, height=500)]
  8.        public class SierpinskiGlitch extends MovieClip {
  9.         private var canvas:BitmapData;
  10.         private var clone:BitmapData;
  11.         private var canvasRect:Rectangle;
  12.         private var w:int;
  13.         private var w2:Number;
  14.         private var w10:Number;
  15.         private var convert:Number;
  16.         private var size:int;
  17.         private var pix:Vector.<uint>;
  18.         private var gray:ColorMatrixFilter;
  19.         private var m:Matrix;
  20.         private var sin:Number;
  21.         private var cos:Number;
  22.         private var dx:Number;
  23.         private var dy:Number;
  24.         private var pnt:Point;
  25.         private var blur:BlurFilter;
  26.                public function SierpinskiGlitch(){
  27.                   // init
  28.             canvas = new BitmapData(500,500,false, 0x000000);
  29.             addChild(new Bitmap(canvas));
  30.             clone = new BitmapData(500,500,false, 0x000000);
  31.             canvasRect = canvas.rect;
  32.             w = canvas.width;
  33.             w2 = 1/w;
  34.             w10 = 1/(w * 80);
  35.             convert = Math.PI/180;
  36.             size = canvas.width * canvas.height;
  37.             pix = new Vector.<uint>(size, true);
  38.             gray = new ColorMatrixFilter([10.550.550,0,0.550.90.550,0,0.550.550.550,00,0,0,1,0]);
  39.             m = new Matrix();
  40.             m.scale(1,-1);
  41.             m.translate(0,canvas.height);
  42.             sin = 0, cos = 0;
  43.             dx = 0, dy = 0;
  44.             pnt = new Point();
  45.             blur = new BlurFilter(10,10,1);
  46.             addEventListener(Event.ENTER_FRAME, onLoop);
  47.             
  48.                }
  49.                // private methods
  50.         private function onLoop(evt:Event):void {
  51.             canvas.lock();
  52.             dx += (mouseX * 10 - 3000 - dx) / 8;
  53.             dy += (mouseY * 4 - dy) / 8;
  54.             for (var i:int = 0; i<size; i++){
  55.                 var xp:int = i % w;
  56.                 var yp:int = int(i * w2);
  57.                 var xp2:int = xp <<1;
  58.                 var t:Number;
  59.                 t = ((yp|xp) * (xp + dx) *w10) % 6.14687;
  60.                 
  61.                 //compute sine
  62.                 // technique from http://lab.polygonal.de/2007/07/18/fast-and-accurate-sinecosine-approximation/
  63.                 // by Michael Baczynski
  64.                 if (t<0) {
  65.                     sin=1.27323954*t+.405284735*t*t;
  66.                 } else {
  67.                     sin=1.27323954*t-0.405284735*t*t;
  68.                 }
  69.                 // compute cosine
  70.                 t = (xp2 + dy) * convert % 6.28;
  71.                 t+=1.57079632;
  72.                 if (t>3.14159265) {
  73.                     t-=6.28318531;
  74.                 }
  75.                 if (t<0) {
  76.                     cos=1.27323954*t+0.405284735*t*t;
  77.                 } else {
  78.                     cos=1.27323954*t-0.405284735*t*t;
  79.                 }
  80.                 var c1:int = 31 * (sin - cos);
  81.                 if (c1 <0) c1 = 256 - c1;
  82.                 c1 = (c1 <<3 | c1) ;
  83.                 pix[i] = c1 <<15 | c1 <<8 | c1;
  84.             }
  85.             canvas.setVector(canvasRect, pix);
  86.             clone.copyPixels(canvas, canvasRect, pnt);
  87.             canvas.draw(clone, m, null, BlendMode.SUBTRACT);
  88.             clone.copyPixels(canvas, canvasRect, pnt);
  89.             clone.applyFilter(clone, canvasRect, pnt, blur);
  90.             canvas.draw(clone, nullnull, BlendMode.ADD);
  91.             canvas.unlock();
  92.         }
  93.         
  94.        }
  95. }
noswf
Get Adobe Flash Player