In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

forked from: 多重連結バネ

/**
 * Copyright yusuke.kikkawa ( http://wonderfl.net/user/yusuke.kikkawa )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/6UeB
 */

package  {
    import flash.display.MovieClip;
    import flash.media.Microphone;
    import flash.display.Sprite;
    import flash.display.Graphics;
    import flash.events.Event;
    import flash.events.MouseEvent;
    public class FlashTest extends MovieClip {
        private var dxy:Number = 15;
        private var w:uint = Math.floor(stage.stageWidth / dxy);
        private var h:uint = Math.floor(stage.stageHeight / dxy);
        //
        private var d_mc:MovieClip;
        private var mi_ar:Array;
        private var canvas:MovieClip
        public function FlashTest() {
            canvas = new MovieClip();
            addChild(canvas)
            // constructor code
            var i:uint;
            var ii:uint;
            var scx:Number = stage.stageWidth * .5;
            var scy:Number = stage.stageHeight * .5;
            //
            w = Math.floor(stage.stageWidth / dxy);
            h = Math.floor(stage.stageHeight / dxy);
            //
            var sx:Number = (stage.stageWidth - dxy * (w - 1)) * 0.5
            var sy:Number = (stage.stageHeight - dxy * (h - 1)) * 0.5
            //
            var p:MovieClip;
            mi_ar = new Array()
            for (i = 0; i < h; i++) {
                for (ii = 0; ii < w; ii++) {
                    if ((i == 0) || (i==h - 1) || (ii == 0) ||  (ii == w - 1)) {
                        p = new Pin();
                    }
                    else{
                        p = new Mi();
                    }
                    canvas.addChild(p);
                    p.x = sx + ii * dxy;
                    p.y = sy + i * dxy;
                    mi_ar.push(p)
                }
            }
            
            for (i = 0; i < mi_ar.length; i++) {
                if (i > w - 1 && i < mi_ar.length - w && i % w != 0 && i % w != w - 1){
                    p=mi_ar[i];
                    p.x += -10 + 20 * Math.random();
                    p.y += -10 + 20 * Math.random();
                    p.init([mi_ar[i-1], mi_ar[i+1], mi_ar[i-w], mi_ar[i+w]])
                }
            }
            addEventListener(Event.ENTER_FRAME, onEnterFrame);
        }

        private function onEnterFrame(evt:Event):void{
            var i:uint;
            var ii:uint;
            var g:Graphics = canvas.graphics;
            g.clear()
            g.lineStyle(1,0xFF0000);
            for (i = 0; i < mi_ar.length; i++) {
                if (i < mi_ar.length - w && i % w != w - 1) {
                    g.moveTo(mi_ar[i].x, mi_ar[i].y);
                    g.lineTo(mi_ar[i + 1].x, mi_ar[i + 1].y);
                    g.lineTo(mi_ar[i + w + 1].x, mi_ar[i + w + 1].y);
                    g.lineTo(mi_ar[i + w].x, mi_ar[i + w].y);
                    g.lineTo(mi_ar[i].x, mi_ar[i].y);
                }
            }
        }
    }
}


import flash.display.Graphics;
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;

class Mi extends MovieClip {
    private var m:Number = 1
    private var k:Number = 0.01;
    private var t:Number = 0.02;
    private var m_ar:Array;
    private var power_:Number = 0;
    
    private var ax:Number;
    private var ay:Number;
    private var vx:Number;
    private var vy:Number;
    private var flag:Boolean = true;
    
    public function Mi() {
        setPower(1);
    }
    
    public function init(_ar:Array):void{
        m_ar = _ar;
        ax = 0;
        vx = 0;
        ay = 0;
        vy = 0;
        this.buttonMode = true;
        this.addEventListener(Event.ENTER_FRAME, onEnterFrame);
        this.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
    }
    
    public function setPower(power:Number):void {
        power_ = power;
        
        var g:Graphics = this.graphics;
        g.clear();
        g.beginFill(createColorFromPower(power));
        g.drawCircle(0, 0, 5);
    }
    
    private function createColorFromPower(power:Number):uint {
        return (uint)(0xFF0000 * power);
    }
    
    private function onMouseDown(evt:MouseEvent):void {
        flag = false;
        this.startDrag()
        stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
    }
    
    private function onMouseUp(evt:MouseEvent):void{
        flag = true;
        this.stopDrag();
        vx = 0;
        vy = 0;
        stage.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp)
    }
    
    private function onEnterFrame(evt:Event):void{
        if (flag) {
            var i:uint
            var dx:Number = 0;
            var dy:Number = 0;
            for (i=0; i<m_ar.length; i++) {
                var mc:MovieClip = m_ar[i];
                dx += mc.x - this.x;
                dy += mc.y - this.y;
            }
            ax = k*dx//
            ay = k*dy//
            vx += ax-t*vx;
            vy += ay-t*vy;
            this.x += vx;
            this.y += vy;
        }
    }
}

import flash.display.MovieClip;
import flash.display.Graphics;
import flash.events.MouseEvent;
class Pin extends MovieClip {
    public function Pin() {
        // constructor code
        var g:Graphics = this.graphics;
        g.beginFill(0x000000);
        g.drawCircle(0, 0, 5);
        this.buttonMode = true;
        this.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown)
    }
    
    private function onMouseDown(evt:MouseEvent):void{
        this.startDrag()
        stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
    }
    
    private function onMouseUp(evt:MouseEvent):void{
        this.stopDrag();
        this.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp);
    }
}