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

flash on 2011-6-9

Frocessingのサンプル1
くねくね線とランダムな円
マウスクリックでリセット
Get Adobe Flash player
by bshh 08 Jun 2011
/**
 * Copyright bshh ( http://wonderfl.net/user/bshh )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/x3Bj
 */

package 
{
    import flash.geom.Point;
    import frocessing.display.*;
   
    /**
     * Frocessingのサンプル1
     * くねくね線とランダムな円
     * マウスクリックでリセット
     */
    public class FrocessingSample01 extends F5MovieClip2DBmp
    {
        //描画サイズ
        private var m_stage_width:Number  = 500;
        private var m_stage_height:Number = 500;
       
        //図形描画の座標
        private var m_points/*Point*/:Array;  //座標を入れる
       
        private var m_point_current_index:int = 0;  //何番目の座標まで描画するか
           
        public function FrocessingSample01(){
            super();
        }
       
        //初期化 Stage が呼び込まれたときに自動的に呼ばれる
        public function setup():void {
           
            //描画範囲指定
            size( m_stage_width, m_stage_height );
           
            //背景色指定(引数の数によって色の指定方法が変わる)
            background(0, 1);  // color, alpha
           
            //座標セット
            setPoints();
        }
       
       
        //図形描画の座標をセット
        private function setPoints():void {
           
            m_points = new Array();
   
            var len:int = m_stage_width - random(m_stage_height / 2);
            var point_num:int = len / 10;
           
            var step:int = len / point_num + random(5, 1);
            var start_x:Number = Math.random() * m_stage_width; //y軸スタート位置はランダム
           
            var yure:Number = random(6, 2);  //くねくねサイズ
           
            var pt:Point;
           
            for (var i:int = 0; i <point_num ; i++) {
                pt = new Point(start_x + random(yure, -yure), -step * i );
                m_points.push(pt);
            }
           
            //始点と終点は同じ値を2つ入れる(始点と終点はコントロールポイントになってるっぽいので)
            pt = m_points[0].clone();
            m_points.unshift(pt);
           
            pt = m_points[m_points.length - 1].clone();
            m_points.push(pt);
        }
       
       
        //描画(フレーム毎に繰り返し)
        public function draw():void {
           
            //マウスが押された場合
            if ( isMousePressed ) {
                //背景を塗りなおす(描画のリセット)
                background(0, 1);
            }
           
            //原点の移動
            translate( 0, m_stage_height);
           
            //-----くねくね線-----
           
            //塗りをなしに
            noFill();
           
            //線色の指定(引数の数によって色の指定方法が変わる)
            stroke(255, 255, 255, 0.5);  //R, G, B, alpha
           
            //線幅指定
            strokeWeight(0.1);
           
            var pt:Point;
           
            //頂点を複数持つ図形の描画
            beginShape();
            for (var i:int = 0; i <m_point_current_index ; i++) {
                pt = m_points[i];
                curveVertex(pt.x, pt.y);
            }
            endShape();
           
           
            //-----ランダムな円-----
           
            //線をなしに
            //noStroke();
           
            strokeWeight(1);
           
            //塗り設定
            fill(255, 255, 255, 0.5);
           
            if(m_point_current_index> 0){
                pt = m_points[m_point_current_index - 1];
            }
            else {
                pt = m_points[0];
            }
            //円の描画
            var maru_size:Number = random(15, 1);
            ellipse(pt.x + random(15, -15), pt.y + random(10, -10), maru_size, maru_size);
           
            //描画する座標進める
            m_point_current_index++;
           
            //最後の座標まで行ったら座標再設定
            if (m_point_current_index> m_points.length) {
                m_point_current_index = 0;
                setPoints();
            }
        }
    }
}