flash on 2014-10-31

by kataribe
失敗
♥0 | Line 65 | Modified 2014-11-02 16:52:54 | MIT License | (replaced)
play

Related images

ActionScript3 source code

/**
 * Copyright kataribe ( http://wonderfl.net/user/kataribe )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/9VUq
 */

package{
    import flash.system.LoaderContext;
    import flash.display.Shape;
    import flash.net.URLRequest;
    import flash.display.Loader;
    import flash.display.Sprite;
    import net.hires.debug.Stats;
    import flash.events.Event;
    public class FlashTest extends Sprite{
        public var bg:Loader = new Loader;
        public function FlashTest(){
            // write as3 code here..
            bg = new Loader();
            bg.load(new URLRequest("http://assets.wonderfl.net/images/related_images/1/10/10a5/10a509ff1767f035a8f0bdb3bc4bcf442a692c3d"), new LoaderContext(true));
            addChild(bg);
            addChild(new (0, 200, 465, 265, 200, this));
            addChild(new Stats);
        }

    }
}
import flash.geom.Point
import flash.display.BitmapDataChannel;
import flash.filters.DisplacementMapFilter;
import flash.geom.Rectangle;
import flash.geom.ColorTransform;
import flash.events.Event;
import flash.display.Bitmap;
import flash.geom.Matrix;
import flash.display.DisplayObject;
import flash.display.BitmapData;
import flash.display.Sprite;

class  extends Sprite{
    protected const OCT_SPEED:uint = 2;
    public var w:int;    //横の長さ
    public var h:int;    //縦の長さ
    public var back:DisplayObject;
    protected var 水面:BitmapData;
    protected var noise:BitmapData;
    protected var ゆらゆら:DisplacementMapFilter;
    public function (x:int, y:int, w:int, h:int, d:int, back:DisplayObject){
        this.x = x;
        this.y = y;
        this.w = w;
        this.h = h;
        this.back = back;                                              //水面に映る背景
        水面 = new BitmapData(w, h);
        水面.draw(back, new Matrix(1, 0, 0, -1, -x, back.height-h));    //上下反転して描込み
        //filters = [new BlurFilter(2, 2, 1)]                            //ぼかす
        addChild(new Bitmap(水面));
        addEventListener(Event.ENTER_FRAME, update);
        
        var map:BitmapData = new BitmapData(w, h>>1);             //縦に半分のサイズでノイズを作る
        map.perlinNoise(32, 32, 1, 0, false, true, 0x01);
        noise = new BitmapData(w, h);
        noise.copyPixels(map, map.rect, new Point(0,0));          //上半分に貼り付け
        noise.draw(map, new Matrix(1,0,0,-1,0,map.height<<1));    //下にひっくり返して貼り付け、ループできるようにする
        ゆらゆら = new DisplacementMapFilter(noise, null, BitmapDataChannel.RED, 0, 16, 0, "ignore");
        水面.applyFilter(水面, 水面.rect, new Point(0,0), ゆらゆら);
    }
    
    private function update(e:Event):void{
        var tmp:BitmapData = new BitmapData(noise.width, OCT_SPEED);
        tmp.copyPixels(noise, new Rectangle(0, noise.height-OCT_SPEED-1, noise.width, noise.height), new Point(0,0));
        noise.scroll(0, OCT_SPEED);
        noise.copyPixels(tmp, tmp.rect, new Point(0,0));
        水面.draw(back, new Matrix(1, 0, 0, -1, -x, back.height-h));    //上下反転して描込み
        水面.applyFilter(水面, 水面.rect, new Point(0,0), ゆらゆら);
    }


}