スプレーのお試し wmotion forked:0favorite:0lines:89license : MIT License modified : 2010-05-10 00:44:19 Embed Tweet package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Shape; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; public class Spray extends Sprite { private var canvas:BitmapData; private var color:uint; private const defaultSize:Number = 50; private var size:Number; private const defaultDensity:Number = 300; private var density:Number; private var sizeBar:ScrollBar; private var densityBar:ScrollBar; public function Spray() { canvas = new BitmapData(this.stage.stageWidth, this.stage.stage.stageHeight, true, 0x00000000); var bitmap:Bitmap = new Bitmap(canvas); addChild(bitmap); sizeBar = new ScrollBar(0xFF0000); this.addChild(sizeBar); sizeBar.x = 10; sizeBar.y = 380; densityBar = new ScrollBar(0x0000FF); this.addChild(densityBar); densityBar.x = sizeBar.x; densityBar.y = sizeBar.y + 40; this.stage.addEventListener(MouseEvent.MOUSE_DOWN, onMDown); this.stage.addEventListener(MouseEvent.MOUSE_UP, onMUp); } private function onMDown(e:MouseEvent):void { color = Math.random() * 0xffffff + 0xff000000; size = defaultSize * sizeBar.parsentage; density = defaultDensity * densityBar.parsentage; this.addEventListener(Event.ENTER_FRAME, onEFrame); } private function onMUp(e:MouseEvent):void { this.removeEventListener(Event.ENTER_FRAME, onEFrame); } private function onEFrame(e:Event):void { for (var i:int = 0; i < density; i++) { var angle:Number = Math.random() * Math.PI * 2; var radius:Number = Math.random() * size; var xpos:Number = this.stage.mouseX + Math.cos(angle) * radius; var ypos:Number = this.stage.mouseY + Math.sin(angle) * radius; canvas.setPixel32(xpos, ypos, color); } } } } import flash.display.Sprite; import flash.display.Shape; import flash.events.MouseEvent; //作成中 class ScrollBar extends Sprite { private var line:Shape; private var box:Sprite; private var lineWidth:Number = 100; private var _parsentage:Number = 1; public function ScrollBar(color:uint = 0x000000):void { line = new Shape(); line.graphics.beginFill(0x888888); line.graphics.drawRect(5, 12, lineWidth, 6); line.graphics.endFill(); this.addChild(line); box = new Sprite(); box.graphics.beginFill(color); box.graphics.drawRect(0, 0, 10, 30); box.graphics.endFill(); box.x = lineWidth; this.addChild(box); box.addEventListener(MouseEvent.MOUSE_DOWN, onMDown); } private function onMDown(e:MouseEvent):void { this.stage.addEventListener(MouseEvent.MOUSE_MOVE, onMMove); this.stage.addEventListener(MouseEvent.MOUSE_UP, onMUp); } private function onMUp(e:MouseEvent):void { _parsentage = box.x / 100; this.stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMMove); this.stage.removeEventListener(MouseEvent.MOUSE_UP, onMUp); } private function onMMove(e:MouseEvent):void { if ((this.mouseX >= 0) && (this.mouseX < lineWidth)) { box.x = this.mouseX; } } public function get parsentage():Number { return _parsentage; } } Code Fullscreen Preview Fullscreen addEventListener mouseX removeEventListener MouseEvent.MOUSE_UP MouseEvent MouseEvent.MOUSE_MOVE mouseY MouseEvent.MOUSE_DOWN MouseEvent.ENTER_FRAME Shape Math.cos Math.sin Math.PI Math.random uint int Number