package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.geom.ColorTransform; import flash.geom.Matrix; import flash.geom.Point; import flash.geom.Rectangle; public class hoge extends Sprite { public function hoge() { var wz:int = stage.stageWidth; var hi:int = stage.stageHeight; var ox:Number = -wz / 2; var oy:Number = -hi / 2; var inic:uint = hue2rgb(0); var gc:Function = graphics.clear; var gf:Function = graphics.beginFill; var gr:Function = graphics.drawRect; var a:Number = -wz * 1.41; var b:Number = -hi * 1.41; var c:Number = wz * 2.83; var d:Number = hi * 2.83; x = -ox; y = -oy; gf(inic); gr(a, b, c, d); var bmp:Bitmap = new Bitmap( new BitmapData(wz * 0.9, hi * 0.9, false, inic) ); var copy:Function = bmp.bitmapData.copyPixels; bmp.x = -bmp.width / 2; bmp.y = -bmp.height / 2; addChild(bmp); var cp:BitmapData = bmp.bitmapData.clone(); var draw:Function = cp.draw; var mx:Matrix = new Matrix(0.9, 0, 0, 0.9); var ct:ColorTransform = new ColorTransform(1, 1, 1, 1, -7, -7, -7); var rc:Rectangle = cp.rect; var pt:Point = new Point(); var cx:int = wz >> 1; var cnt:uint = 0; addEventListener(Event.ENTER_FRAME, function(e:Event):void { s = 0.4 - (cnt % 40) / 40 * 0.3; v = 0.8 + (cnt % 40) / 40 * 0.2; gc(); gf(hue2rgb(cnt % 360)); gr(a, b, c, d); draw(stage, mx, ct); copy(cp, rc, pt); cnt++; }); stage.addEventListener(MouseEvent.MOUSE_MOVE, function(e:MouseEvent):void { rotation = e.stageX / cx - 1; bmp.x = ox + e.stageX * 0.1; bmp.y = oy + e.stageY * 0.1; }); } private static var s:Number = 0.1; private static var v:Number = 1; private static function hue2rgb(h:Number):uint { var i:int = int(h / 60); var f:Number = h / 60 - i; var p:Number = v * (1 - s); var q:Number = v * (1 - s * f); var t:Number = v * (1 - s * (1 - f)); switch (i) { case 0: return 0xFF * v << 16 | 0xFF * t << 8 | 0xFF * p << 0; case 1: return 0xFF * q << 16 | 0xFF * v << 8 | 0xFF * p << 0; case 2: return 0xFF * p << 16 | 0xFF * v << 8 | 0xFF * t << 0; case 3: return 0xFF * p << 16 | 0xFF * q << 8 | 0xFF * v << 0; case 4: return 0xFF * t << 16 | 0xFF * p << 8 | 0xFF * v << 0; case 5: return 0xFF * v << 16 | 0xFF * p << 8 | 0xFF * q << 0; } return 0; } } } flash on 2010-3-15