Forked from: hRommy's 星をランダムに散布 diff:71 forked from: 星をランダムに散布 ★星を描画 ランダム マウスオーバー fumix forked:0favorite:0lines:118license : All rights reserved modified : 2010-07-25 15:51:45 Embed Tweet // forked from hRommy's 星をランダムに散布 package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.events.TimerEvent; /** * ★星を描画 ランダム * マウスオーバー */ public class Main extends Sprite { public function Main() { //spredStar(50, 100, 100, 150, 0x44CC44); spredRanStar(100, 232, 232, 232, 0xAACCCC ); //spredRanStar(80, 100, 320, 180, 0xDDCC00 ); //spredStar(100, 400, 250, 180, 0xFFCC00 ); } //ランダム散布 private function spredStar(num:uint = 20, x:uint = 0, y:uint = 0, radius:uint = 50, color:uint = 0x000000):void { for (var i:uint = 0; i < num; i++) { var _star:Star = new Star( getRandom(color, 0x003333), 0.8 ); _star.drawStar(0, 0, getRandom(2, 8), 0.4); //放射状に配置 _star.x = x+Math.cos( getRandom(0, 2*Math.PI) )*getRandom(0, radius); _star.y = y + Math.sin( getRandom(0, 2*Math.PI) ) * getRandom(0, radius); _star.rotation = Math.floor( getRandom(0, 360) ); _star.scaleX = _star.scaleY = 0; addChild(_star); _star.addEventListener(MouseEvent.MOUSE_OVER, onMouseStar); _star.addEventListener(Event.ENTER_FRAME, zoomIn); } } private function spredRanStar(num:uint = 20, x:uint = 0, y:uint = 0, radius:uint = 50, color:uint = 0x000000):void { for (var i:uint = 0; i < num; i++) { var _star:Star = new Star( getRandom(color, 0x003333), 0.8 ); _star.drawRanStar(0, 0, getRandom(2, 8), 0.4); //放射状に配置 _star.x = x+Math.cos( getRandom(0, 2*Math.PI) )*getRandom(0, radius); _star.y = y + Math.sin( getRandom(0, 2*Math.PI) ) * getRandom(0, radius); _star.rotation = Math.floor( getRandom(0, 360) ); _star.scaleX = _star.scaleY = 0; addChild(_star); _star.addEventListener(MouseEvent.MOUSE_OVER, onMouseStar); _star.addEventListener(Event.ENTER_FRAME, zoomIn); } } // private function zoomIn(evt:Event):void { if(evt.target.scaleX<1){ evt.target.scaleX+=0.05; evt.target.scaleY = evt.target.scaleX; }else { evt.target.removeEventListener(Event.ENTER_FRAME, zoomIn); } } private function onMouseStar(evt:MouseEvent):void { evt.target.addEventListener(Event.ENTER_FRAME, twinkle); } private function twinkle(evt:Event):void { evt.target.cnt++; if(evt.target.cnt < 30){ // evt.target.rotation += 20 * Math.cos(Math.PI * (evt.target.cnt % 2)); evt.target.scaleX += 0.2 * Math.cos(Math.PI * (evt.target.cnt % 2)); evt.target.scaleY += 0.2* Math.cos(Math.PI* (evt.target.cnt%2)); }else { evt.target.removeEventListener(Event.ENTER_FRAME, twinkle); evt.target.addEventListener(Event.ENTER_FRAME, zoomIn); evt.target.cnt = 0; } } //ランダム作成 private function getRandom(min:Number, range:Number):Number { return Math.floor(Math.random()*range)+min; } } } import flash.display.Sprite; import flash.geom.Point; /** * ★星を描画する * */ class Star extends Sprite{ public var cnt:uint = 0; public function Star(lineColor:uint=0x000000,alpha:Number=1){ graphics.lineStyle(1, lineColor,alpha); graphics.beginFill(lineColor, alpha); } //普通の星 public function drawStar(x:Number, y:Number, radius:Number, rating:Number):void { var numPoint:uint = 10; var points:Array = new Array(); var px:Number; var py:Number; for (var i:uint = 0; i < numPoint; i++) { if (i % 2==0) { px = radius * Math.cos(2 * Math.PI / numPoint * i) + x; py = radius * Math.sin(2 * Math.PI / numPoint * i) + y; }else { px = radius * rating * Math.cos(2 * Math.PI / numPoint * i) + x; py = radius * rating * Math.sin(2 * Math.PI / numPoint * i) + y; } points.push( new Point(px, py) ); } graphics.moveTo(points[0].x, points[0].y); for (i = 1; i < numPoint; i++) { graphics.lineTo(points[i].x, points[i].y); } graphics.lineTo(points[0].x, points[0].y); graphics.endFill(); } //ラフな星 public function drawRanStar(x:Number, y:Number, radius:Number, rating:Number):void { var numPoint:uint = 10; var points:Array = new Array(); var px:Number; var py:Number; for (var i:uint = 0; i < numPoint; i++) { if (i % 2==0) { px = getRandom(radius,radius*0.4) * Math.cos(2 * Math.PI / numPoint * i) + x; py = getRandom(radius,radius*0.4) * Math.sin(2 * Math.PI / numPoint * i) + y; }else { px = getRandom(radius,radius*0.3) * rating * Math.cos(2 * Math.PI / numPoint * i) + x; py = getRandom(radius,radius*0.3) * rating * Math.sin(2 * Math.PI / numPoint * i) + y; } points.push( new Point(px, py) ); } graphics.moveTo(points[0].x, points[0].y); for (i = 1; i < numPoint; i++) { graphics.lineTo(points[i].x, points[i].y); } graphics.lineTo(points[0].x, points[0].y); graphics.endFill(); } //ランダム作成 private function getRandom(min:Number, range:Number):Number { return Math.floor(Math.random()*range)+min; } } Code Fullscreen Preview Fullscreen TimerEvent.ENTER_FRAME scaleX Math.PI Math.cos Math.min alpha Math.floor rotation scaleY removeEventListener Math.sin addEventListener push addChild Point Array Math.random Sprite uint Number