暑い・・・
drawTrianglesを学ぶため、
forked from: drawTrianglesをやってみた。http://wonderfl.net/c/dJnW
を参考にさせていただきました。
※ 使用の画像は某自然動物公園で撮影してきたカンガルーのような小動物です。
♥2 |
Line 92 |
Modified 2010-07-26 16:46:13 |
MIT License
archived:2017-03-20 00:52:33
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()
}
}