ColorfulStar クリックしたら星が出る何か shuff forked:2favorite:7lines:92license : MIT License modified : 2010-08-04 23:45:56 Embed Tweet // クリックしたら星が出る何か package { import flash.display.BlendMode; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.filters.GlowFilter; import org.libspark.betweenas3.BetweenAS3; import org.libspark.betweenas3.tweens.ITween; [SWF(backgroundColor=0x0,height=465,width=465)] public class Main extends Sprite { private var circle:Sprite; private var stars:Array=[]; public function Main(){ stage.addEventListener(MouseEvent.MOUSE_DOWN,setCircle); } //丸を作る private function makeCircle():Sprite{ var cc:Sprite = new Sprite(); cc.graphics.beginFill(Math.random()*0xffffff); //ここの環境での値 cc.graphics.drawCircle(0,0,20); /* //FlexBuilderの環境での値 cc.graphics.drawCircle(0,0,10); */ cc.graphics.endFill(); return cc; } //クリックされたときに丸を表示する private function setCircle(e:MouseEvent):void{ circle = makeCircle(); for(var angle:int = 0 ; angle < 360 ; angle += 30){ var star:Star = new Star(Math.random()*0xffffff,20,5,mouseX,mouseY,Math.cos(angle*Math.PI/180)*5,Math.sin(angle*Math.PI/180)*5); star.filters = [new GlowFilter(0xffffff,1,7,7,2)]; star.blendMode = BlendMode.ADD; stars.push(star); addChild(star); } circle.filters = [new GlowFilter(0xffffff,2,30,30,3)]; circle.blendMode = BlendMode.ADD; addChild(circle); addEventListener(Event.ENTER_FRAME,onEnterframe); //丸を拡大させた後に縮小させる動作 var exp:ITween = BetweenAS3.tween(circle,{scaleX:4,scaleY:4),null,0.25); var shr:ITween = BetweenAS3.tween(circle,{scaleX:0,scaleY:0},null,0.3); BetweenAS3.serial(exp,shr).play(); circle.x = mouseX; circle.y = mouseY; } //星をフレーム毎に動かし、ステージ上にあるかをチェックする private function onEnterframe(e:Event):void{ for(var i:int = 0;i<stars.length;i++){ stars[i].move(); if(stars[i].x<-50||stage.stageWidth+50<stars[i].x|| stars[i].y<-50||stage.stageHeight+50<stars[i].y){ removeChild(stars[i]); stars.splice(i--,1); } } } } } //星を作っていくクラス import flash.display.Sprite; class Star extends Sprite { public var vx:Number; public var vy:Number; public function Star(color:uint,r:Number,p:int,x:Number,y:Number,vx:Number,vy:Number) { var r2:Number=r/2; var angle:Number=0; var addition:Number=360/(p*2); graphics.beginFill(color); graphics.moveTo(r,0); for(var i:uint=0;i<p*2;i++){ angle += addition; var to_x:Number; var to_y:Number; var radian:Number=angle*Math.PI/180; if(i%2){ to_x=r*Math.cos(radian); to_y=r*Math.sin(radian); }else{ to_x=r2*Math.cos(radian); to_y=r2*Math.sin(radian); } graphics.lineTo(to_x,to_y); } graphics.endFill(); this.x = x; this.y = y; this.vx = vx; this.vy = vy; } //星を動かしていく public function move():void{ //下に落ちていくおまけ動作 //vy+=0.8; x+=vx; y+=vy; rotationY+=50; } } Code Fullscreen Preview Fullscreen tkinjo Nyarineko fardeen narutohyper kitsionchen : 几何 tenasaku : 連打して「たまやー」 matsu4512 : BetweenAS3星が拡散! BetweenAS3 几何 星 Math.exp color GlowFilter BetweenAS3.tween scaleY scaleX mouseY mouseX BetweenAS3.serial play blendMode Math.cos rotationY filters removeChild splice Math.sin MouseEvent.MOUSE_DOWN Math.PI MouseEvent.ENTER_FRAME sort new page view favorite forked pv214 forked from: ColorfulStar guruNAOYA forked:1 favorite:0lines:93 (diff:1) pv0 forked from: ColorfulStar syROBO forked:0 favorite:0lines:93 (diff:1)