forked from: バネの動きの練習

by gaziya forked from バネの動きの練習 (diff: 76)
♥0 | Line 59 | Modified 2011-11-20 10:15:17 | MIT License
play

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))               
           })      
        }
    }
}