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: PerlinNoise による、軽くてきれいな動く背景を作ってみる

perlinNoise による、軽くてきれいな動く背景を作ってみる

ラップれです
/**
 * Copyright tsu_droid ( http://wonderfl.net/user/tsu_droid )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/p0n0
 */

// forked from mi77's PerlinNoise による、軽くてきれいな動く背景を作ってみる
// forked from mi77's perlinNoise の引数をわかりやすくまとまる
/*
//////////////////////////////////////////////////// 
perlinNoise による、軽くてきれいな動く背景を作ってみる
//////////////////////////////////////////////////// 
 */

package 
{
////////////////////////////////////////////////////////////////////////////////// ラップれです
import flash.display.Sprite;
import org.libspark.thread.Thread;
import org.libspark.thread.EnterFrameThreadExecutor;

[SWF(frameRate = 30, width = 465, height = 465, backgroundColor = 0xFFFFFF]

public class Wrap extends Sprite 
{
    private var t:Velvet;
    public function Wrap() 
    {
        if (!Thread.isReady) 
        {
            Thread.initialize(new EnterFrameThreadExecutor());//Thread
        }
        t = new Velvet(this);
        t.start();
    }
}
//////////////////////////////////////////////////////////////////////////////////
}

import flash.display.*;
import flash.events.*;
import flash.geom.*;
import flash.filters.*;

import org.libspark.thread.Thread;
import caurina.transitions.Tweener;
import caurina.transitions.properties.ColorShortcuts; ColorShortcuts.init();
import caurina.transitions.properties.FilterShortcuts; FilterShortcuts.init();

internal class Velvet extends Thread
{
    private var main:Sprite;
    private var sp:Sprite;
    private var bmps:Object;
    private var bmds:Object;
    private var offset:Object;
    private const size:int=465;
    private const ratio:int = 4;
    private var i:int;
    
    public function Velvet (main:Sprite)
    {
        this.main = main;
    }
    
    override protected function run():void
    {
        sp = new Sprite();
        main.addChild(sp);
                sp.scaleX= sp.scaleY= ratio;
                //
                sp.rotationX = -81.95;
                sp.y = 195;        
                //
        bmds = [];
        bmps = [];
        bmds[0] = new BitmapData(size/ratio, size/ratio);
        bmps[0] = new Bitmap(bmds[0]);
                bmps[0].smoothing = true;
        sp.addChild(bmps[0]);
        initNoiz();
        sp.addEventListener(Event.ENTER_FRAME, enterFrameH);
    }
    
    private function initNoiz():void
    {
        offset = [new Point(0, 0), new Point(0, 0)];
        offset[0].x = 0;
        offset[0].y = 0;
        offset[1].x = 0;
        offset[1].y = 0;
    }
    
    public function enterFrameH(e:Event):void
    {
        offset[0].x -= 0.5;
        offset[0].y -= 0.4;
        offset[1].x -= 0.2;
        offset[1].y -= 0.1;
        bmds[0].perlinNoise(
            32,//-----------------/ 1 : X周波数 : int
            32,//-----------------/ 2 : Y周波数 : int
            6,//------------------/ 3 : レイヤー枚数 :int
            100,//----------------/ 4 : 波動の乱れのダイナミクス : int
            false,//--------------- / 5 : タイリング用に上下と左右をつなぐ ?
            false,//--------------- / 6 : フラクタルノイズ? 
            (4),//------------- / 7 : カラーチャンネルをビットで指定 : ( 0x01R | 0x02 G |  0x04 B | 0x08 Alpha ) --- 
            false,//---------------/ 8 : グレイスケール?
            offset//-------------- / 9 : 各レイヤーをスクロールするためのPoint型の配列
        );
        i++;
    }
    
    
    override protected function finalize():void
    {
    //
    }
}