情人节之闪闪心形

 

   今天转一下麦哥哥的程序,他写的情人节心形程序。这个程序写的比较有意思,带艺术感一点。当中的趣味,就不多解释了。 好吧,情人节。有情人的情人去吧,没请人的看代码吧。

   

    对不起,我没有情人。

    浪漫不起来!

 

 

package { import flash.display.*; import flash.events.*; import flash.filters.GlowFilter; import flash.geom.Matrix; import flash.media.Sound; import flash.net.URLRequest; import flash.text.TextField; import flash.text.TextFormat; [SWF(backgroundColor="0xffffff", frameRate="25")] public class Cardioid extends Sprite { public function Cardioid() { this.addEventListener(Event.ADDED_TO_STAGE, onAdded); } private function onAdded(e:Event):void { this.removeEventListener(Event.ADDED_TO_STAGE, onAdded); stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; init(); } private var _buffer:BitmapData; private var _sparkleBuffer:BitmapData; private var _sparkleMatrix:Matrix; private function init():void { graphics.beginFill(0xff99cc); graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight); graphics.endFill(); _buffer = new BitmapData(320, 240, true, 0x0); var canvas:Bitmap = new Bitmap(_buffer); canvas.x = (stage.stageWidth - canvas.width) >> 1; canvas.y = (stage.stageHeight - canvas.height) >> 1; this.addChild(canvas); var scale:Number = 4; _sparkleBuffer = new BitmapData(320/scale, 240/scale, true, 0x0); var sparkle:Bitmap = new Bitmap(_sparkleBuffer, "never", true); sparkle.scaleX = scale; sparkle.scaleY = scale; sparkle.x = (stage.stageWidth - sparkle.width) >> 1; sparkle.y = (stage.stageHeight - sparkle.height) >> 1; sparkle.blendMode = BlendMode.ADD; sparkle.alpha = 0.5; this.addChild(sparkle); _sparkleMatrix = new Matrix(1/scale, 0, 0, 1/scale, 0, 0); var label:TextField = new TextField(); label.mouseEnabled = false; label.selectable = false; label.defaultTextFormat = new TextFormat('_san', 36, 0x808080, true); label.autoSize = "left"; label.text = "Happy Valentine's Day!"; label.x = (stage.stageWidth - label.width) >> 1; label.y = (stage.stageHeight - label.height) >> 1; this.addChild(label); label.filters = [new GlowFilter(0xffffff, 1, 4, 4, 2)]; //Cardioid -DATEKEN(http://piapro.jp/t/kr-3) new Sound(new URLRequest("http://c1.piapro.jp/amp3/32iqmw1uicn6shoc_20100214210520_audition.mp3")).play(); this.addEventListener(Event.ENTER_FRAME, onEnterFrame); } private function draw(target:BitmapData, ox:int, oy:int, size:Number, rotation:Number, color:uint=0x0):void { var a:Number = size; var r:Number, px:Number, py:Number; for(var j:int=0; j < 360; j+=4) { for(var i:int=0; i < 360; i+=4) { //Cardioid var theta:Number = Math.PI/180 * (i + rotation); r = a * (1 - Math.sin(theta)); px = r * Math.cos(theta); py = r * Math.sin(theta); //deco var phi:Number = Math.PI/180 * j; px *= phi * Math.sin(phi) * 1.1; py *= phi; target.setPixel32(px + ox, -py + oy, color); } } } private var t:int = 0; public function onEnterFrame(e:Event):void { var size:Number = Math.sin(0.01745 * t) * 0.5 + 16; t = (t + 12) % 360; _buffer.lock(); _buffer.fillRect(_buffer.rect, 0x0); draw(_buffer, 160, 32, size, t/24, 0xffffffff); _buffer.unlock(); _sparkleBuffer.lock(); _sparkleBuffer.fillRect(_sparkleBuffer.rect, 0x0); _sparkleBuffer.draw(_buffer, _sparkleMatrix); _sparkleBuffer.unlock(); } } }

 

 

你可能感兴趣的:(闪客工具收集,import,function,buffer,matrix,360,class)