暑い・・・

by mousepancyo
drawTrianglesを学ぶため、
forked from: drawTrianglesをやってみた。http://wonderfl.net/c/dJnW
を参考にさせていただきました。
※ 使用の画像は某自然動物公園で撮影してきたカンガルーのような小動物です。
♥2 | Line 92 | Modified 2010-07-26 16:46:13 | MIT License
play

ActionScript3 source code

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

/*
drawTrianglesを学ぶため、
forked from: drawTrianglesをやってみた。http://wonderfl.net/c/dJnW
を参考にさせていただきました。
※ 使用の画像は某自然動物公園で撮影してきたカンガルーのような小動物です。
*/
package  {
    import flash.utils.Timer;
    import flash.display.Sprite;
    import flash.display.Shape;
    import flash.display.BitmapData;
    import flash.display.Bitmap;
    import flash.events.Event;
    import flash.events.TimerEvent;
    import flash.display.Loader;
    import flash.net.URLRequest;
    import flash.display.LoaderInfo;
    import flash.text.TextField;
    import flash.text.TextFormat;
    import flash.utils.Timer;
    import flash.system.Security;
    
    [SWF(width=465, height=465, backgroundColor=0,frameRate=30)]
    public class Main extends Sprite{
        
        private var _vertices:Vector.<Number> = new Vector.<Number>()
        private var _indices:Vector.<int> = new Vector.<int>()
        private var _uvData:Vector.<Number> = new Vector.<Number>()
        private var _bmd:BitmapData
        private var _bm:Bitmap
        private var _shape:Shape = new Shape()
        
        private var _loader:Loader
        private var _req:URLRequest
        
        private var _xLen:int = 15
        private var _yLen:int = 15
        
        private var _timer:Timer
        
        private var _msg:TextField = new TextField()
        private var _fmt:TextFormat = new TextFormat("_typewriter", 14, 0xFFFFFF, true, false, false, null, null, "center")

        public function Main() {
            Security.loadPolicyFile("http://www.digifie.jp/crossdomain.xml");
            //
            var base:Base = new Base(stage.stageWidth, stage.stageHeight, 0)
            _msg.defaultTextFormat = _fmt
            _msg.text = "「今年の夏は暑いなぁ。あまりに暑くてもう溶けそうだよ…」"
            _msg.width = stage.stageWidth
            _msg.y = 220
            addChild(_msg)
            loadImage("http://www.digifie.jp/files/test100726.jpg")
        }
        
        //読み込み
        private function loadImage(url:String):void{
            _loader = new Loader();
            _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadedListener);
            _loader.load(new URLRequest(url));
        }
        private function onLoadedListener(e:Event):void {
             _timer = new Timer(5000,1)
             _timer.addEventListener(TimerEvent.TIMER, timerComplete)
             _timer.start()  
        }
        
        private function timerComplete(e:TimerEvent):void{
            _timer.removeEventListener(TimerEvent.TIMER, timerComplete)
            addChild(_shape)
            _bmd = new BitmapData(_loader.width, _loader.height, false, 0)
            _bmd.draw(_loader)
            //
            for (var i:int=0; i < _xLen; i++){
                for (var j:int=0; j < _xLen; j++){
                    _uvData.push(j / (_xLen - 1), i / (_yLen - 1));
                    _vertices.push(_bmd.width * j / (_xLen - 1), _bmd.height * i / (_yLen - 1));
                    if (i != (_yLen - 1) && j != (_xLen - 1)){
                        _indices.push(_xLen * i + j, _xLen * i + j + 1, _xLen * (i + 1) + j);
                        _indices.push(_xLen * i + j + 1, _xLen * (i + 1) + j, _xLen * (i + 1) + j + 1);
                    }
                }
            }
            
            addEventListener(Event.ENTER_FRAME, update);
        }

        
        private function update(e:Event):void{
            for (var i:int=0; i < _xLen * _yLen; i++){
                var n:Number = Math.random()*0.6-0.3
                _vertices[i*2]-=n
                _vertices[i*2+1]-=n
           }
            createTriangles(_vertices, _indices, _uvData)    
        }
        
        private function createTriangles(ver:Vector.<Number>, ind:Vector.<int>, uv:Vector.<Number>, cull:String = "none"):void{
            _shape.graphics.clear();
            //_shape.graphics.lineStyle(1, 0xFFFFFF)
            _shape.graphics.beginBitmapFill(_bmd, null, true, true)
            _shape.graphics.drawTriangles(ver, ind, uv, cull)
            _shape.graphics.endFill()
        }

    }
}


//class Base
import flash.display.Sprite
import flash.text.TextField;

class Base extends Sprite{
    public function Base(color:int,w:int,h:int):void{
        graphics.beginFill(color, 1)
        graphics.drawRect(0,0,w,h)
        graphics.endFill()
    }
}