forked from: バネの動きの練習
forked from バネの動きの練習 (diff: 76)
ActionScript3 source code
/**
* Copyright gaziya ( http://wonderfl.net/user/gaziya )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/tTdU
*/
// forked from yuugurenote's バネの動きの練習
package {
import flash.utils.setInterval
import flash.display.Sprite;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.events.Event;
import flash.geom.ColorTransform;
import flash.filters.BlurFilter;
import flash.geom.Point;
[SWF(width=465,height=465,frameRate=30)]
public class AS111113_01 extends Sprite {
private var spring:Number = 0.08
private var friction:Number = 0.92
public function AS111113_01() {
var canvas:BitmapData=new BitmapData(stage.stageWidth,stage.stageHeight,false,0x0)
addChild(new Bitmap(canvas))
var sprites:Vector.<Sprite> = new Vector.<Sprite>
var rabbits:Vector.<Number> = new Vector.<Number>
var numSprites:int = 200
for (var i:int=0; i<numSprites; i++) {
sprites.push(addChild(new Sprite) as Sprite)
with (sprites[i]) {
graphics.beginFill(0xff<<16|Math.random()*0xff<<8|Math.random()*0xff)
graphics.drawCircle(0,0,5)
x = Math.random()* stage.stageWidth
y = Math.random()* stage.stageHeight
rabbits.push(x,y,0,0)
}
}
var idx:int = 0
setInterval(function():void {
rabbits[4*idx] = Math.random()* stage.stageWidth
rabbits[4*idx+1] = Math.random()* stage.stageHeight
rabbits[4*idx+2] = 0
rabbits[4*idx+3] = 0
idx++
if (idx == numSprites) idx = 0
},30)
addEventListener(Event.ENTER_FRAME,function(e:Event):void {
for (var i:int=0; i<numSprites; i++) {
var length_x:Number = rabbits[4*i]-sprites[i].x
var length_y:Number = rabbits[4*i+1]-sprites[i].y
var speed_x:Number = rabbits[4*i+2]
var speed_y:Number = rabbits[4*i+3]
speed_x += length_x*spring
speed_y += length_y*spring
speed_x *= friction
speed_y *= friction
sprites[i].x += speed_x
sprites[i].y += speed_y
rabbits[4*i+2] = speed_x
rabbits[4*i+3] = speed_y
}
canvas.draw(stage,null,new ColorTransform(0.8,0.8,0.8))
canvas.applyFilter(canvas, canvas.rect, new Point(), new BlurFilter(5, 5, 2))
})
}
}
}