package { import flash.display.Sprite; import flash.events.Event; public class FlashTest extends Sprite { private var array:Array = new Array(); private var grv:Number = 1; private var bounce:Number = 0.5; private var limitSpeed:Number = 1; private var minRadius:Number = 5; private var maxNum:int = 100; public function FlashTest() { init(); } private function init():void { // write as3 code here.. makeFirstBall(); addEventListener(Event.ENTER_FRAME, onEnter); } private function makeFirstBall():void { var b:Ball = new Ball(50,Math.random()*10-5,0); b.x = stage.stageWidth/2; b.y = stage.stageHeight/2; addChild(b); array.push(b); } private function onEnter(evt:Event):void { var l:int = array.length; for (var i:int = l - 1; i >= 0; i--) { var b:Ball = array[i]; var bounded:Boolean = false; b.vy += grv; b.x += b.vx; b.y += b.vy; if (b.x+b.r > stage.stageWidth || b.x-b.r < 0) { b.x -= b.vx; b.vx = -b.vx * bounce; b.vy = b.vy * bounce; bounded = true; } if (b.y+b.r > stage.stageHeight || b.y-b.r < 0) { b.y -= b.vy; b.vx = b.vx * bounce; b.vy = -b.vy * bounce; bounded = true; } if (bounded && Math.sqrt(b.vx*b.vx + b.vy*b.vy) < limitSpeed) { array.splice(i,1); if (b.r > minRadius) { for (var j:int = 0; j < 4; j++) { var b1:Ball = new Ball(b.r*0.7, Math.random()*100-50, Math.random()*100); b1.x = b.x; b1.y = b.y; addChild(b1); array.push(b1); } } else if(array.length == 0) { makeFirstBall(); } removeChild(b); b = null; } } } } } import flash.display.Sprite; class Ball extends Sprite { public var r:Number; public var vx:Number; public var vy:Number; public function Ball(rad:Number = 100, vx:Number = 0, vy:Number = 0) { r = rad; this.graphics.beginFill(0xff0000); this.graphics.drawCircle(0,0,r); this.graphics.endFill(); this.vx=vx; this.vy=vy; } } 止まったらハジケる玉