class Warp { var mc:MovieClip; var Z:Array; var base_z:Number = 1; var maxI:Number = 18; // keitai- > var cx = 300, cy = 400, w = _root.400, h = 640; var cx = 300, cy = 350, w = 400, h = 400; var shift = 0, col; var mode:Number; function Warp(mc:MovieClip, mode:Number){ this.mc = mc; this.mode = mode; this.Z = new Array(); } function z_init(){ for(var i = 0; i < maxI; i++) Z[i] = base_z + i * 0.5; } function getX(i:Number):Number{ return cx * (1 - 1 / Z[i]); } function getY(i:Number):Number{ return cy * (1 - 1 / Z[i]); } function getW(i:Number):Number{ return w / Z[i]; } function getH(i:Number):Number{ return h / Z[i]; } function getAlpha(i:Number):Number{ var a:Number = 15 * (Z[i] - 0.8); if(a > 15) a = 15; if(a < 0) a = 0; return a; } function onDraw(){ mc.clear(); if(mode == 0) drawRect(0, 0, w, h, 0, 255); //else // drawRect(0, 0, w, h, getCol((shift) * Math.PI / 8), 10); for(var i = maxI - 1; i > 0 ; i--){ var x0:Number = getX(i); var y0:Number = getY(i); var w0:Number = getW(i); var h0:Number = getH(i); var alpha:Number = getAlpha(i); var myCol = getCol((shift + i) * Math.PI / 8); //if(i == maxI-1) trace(shift+i); if(x0 < 0) x0 = 0; if(y0 < 0) y0 = 0; if(w0 > w) w0 = w; if(h0 > h) h0 = h; drawRect(x0, y0, w0, h0, myCol, alpha); } } function drawRect(x0:Number, y0:Number, w0:Number, h0:Number, col:Number, alpha:Number){ mc.lineStyle(); mc.beginFill(col, alpha);// alpha mc.moveTo(x0, y0); mc.lineTo(x0, y0 + h0); mc.lineTo(x0 + w0, y0 + h0); mc.lineTo(x0 + w0, y0); mc.lineTo(x0 + w0, y0); mc.lineTo(x0, y0); mc.endFill(); } function getCol(colT:Number){ var v0, v1; if(mode == 0){ var v0 = 0x33; var v1 = 0xff; } else { var v0 = 0x44; var v1 = 0x88; } var r = int(v0 * Math.sin(colT) + v1); var g = int(v0 * Math.sin(colT + Math.PI * 2 / 3) + v1); var b = int(v0 * Math.sin(colT + Math.PI * 4 / 3) + v1); if(r > 0xff) r = 0xff; if(g > 0xff) g = 0xff; if(b > 0xff) b = 0xff; if(r < 0) r = 0; if(g < 0) g = 0; if(b < 0) b = 0; return r * 0x10000 + g * 0x100 + b; } function onTick(){ base_z -= 0.1; if(base_z <= 0.01){ shift += 1; base_z += 1; } z_init(); onDraw(); } }