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

畳が恋しくなったのでASで再現してみた。

畳が恋しくなったのでASで再現してみた。
@author Hiiragi

下記の「作り方」を参考にしてます。(rsakaneさんのサイト経由)
http://macototo.cool.ne.jp/junics/dark_tatami.html
http://d.hatena.ne.jp/rsakane/20090603/tatami

割とらしくなった気がするけど、立体感があまりないから気持ち悪い・・・。

畳の作成時の幅÷畳の列の数が割り切れない数だと、畳の筋の部分に灰色の線が入るので非推奨。

あと、ふちの部分はもう作る気力がないんで、だれか作り方教えてください。(汗
Get Adobe Flash player
by Hiiragi 27 Dec 2009

    Talk

    ProjectNya at 12 Apr 2011 10:48
    似たのを作ってたよ! http://wonderfl.net/c/pUkB
    Hiiragi at 18 Apr 2011 10:48
    おお、ふちの部分も作られたのですね。あの部分は手法が思い浮かばなかったので放置してました。(笑)柄とかあるともっといいですねー。

    Tags

    Embed
package  
{
	import flash.display.Bitmap;
	import flash.display.Sprite;
	
	/**
	 * 畳が恋しくなったのでASで再現してみた。
	 * @author Hiiragi
	 * 
	 * 下記の「作り方」を参考にしてます。(rsakaneさんのサイト経由)
	 * http://macototo.cool.ne.jp/junics/dark_tatami.html
	 * http://d.hatena.ne.jp/rsakane/20090603/tatami
	 * 
	 * 割とらしくなった気がするけど、立体感があまりないから気持ち悪い・・・。
	 * 
	 * 畳の作成時の幅÷畳の列の数が割り切れない数だと、畳の筋の部分に灰色の線が入るので非推奨。
	 * 
	 * あと、ふちの部分はもう作る気力がないんで、だれか作り方教えてください。(汗
	 * 
	 */
	[SWF(width=465, height=465, frameRate=30, backgroundColor=0xFFFFFF)]
	public class TatamiTest extends Sprite
	{
		
		public function TatamiTest() 
		{
			//幅と畳の列の数が割り切れるような数字にしておかないと筋に灰色の線が入る。
			this.addChild(new Bitmap(new Tatami(500, 500, 20)));
		}
		
	}

}


//畳クラス(BitmapData)
import flash.display.*;
import flash.filters.BlurFilter;
import flash.geom.ColorTransform;
import flash.geom.Matrix;
import flash.geom.Point;
import flash.geom.Rectangle;


class Tatami extends BitmapData
{
	private var _noiseBmpd:BitmapData;
	
	public function Tatami(w:int, h:int, columns:int = 20) 
	{
		//判りやすいように赤色にしてるだけなんで、色は気にしないでください。
		super(w, h, false, 0xFF0000);
		
		//初期化
		_noiseBmpd = new BitmapData(w / columns, h);
		
		//ストライプを作成(1列分)
		var mtx:Matrix = new Matrix();
		mtx.createGradientBox(w/columns, h);
		var stripeSp:Sprite = new Sprite();
		var ratio:Number = 255 / 5;
		stripeSp.graphics.beginGradientFill(GradientType.LINEAR,
											[0xBBBBBB, 0xFFFFFF, 0xFFFFFF, 0xBBBBBB],
											[1, 1, 1, 1],
											[0, ratio * 1, ratio * 4, 255],
											mtx);
		stripeSp.graphics.drawRect(0, 0, w / columns, h);
		stripeSp.graphics.endFill();
		

		
		//for分で左から一列ずつ書いていく
		for (var i:int = 0; i < columns; i++)
		{
			//上で作ったストライプのスプライトを、所定の位置に描く
			this.draw(stripeSp, new Matrix(1, 0, 0, 1, w / columns * i, 0));
			
			//ランダムでノイズを描く
			_noiseBmpd.noise(Math.random() * 1000 >> 0, 0, 255, 7, true);
			//ノイズをブレさせる
			_noiseBmpd.applyFilter(_noiseBmpd, new Rectangle(0, 0, w / columns, h), new Point(0, 0), new BlurFilter(20, 1, 2));
			//ブレたノイズをストライプを描いた場所にBlendMode.MULTIPLYで描く
			this.draw(_noiseBmpd, new Matrix(1, 0, 0, 1, w / columns * i, 0), new ColorTransform(1.6, 1.6, 1.6, 1, -40, -30, -80, 0), BlendMode.MULTIPLY);
		}
		
		//なんとなく全体が混ざったっぽくなった気がするフィルター
		//(いらないかもしれないけど、なかったら「はっきりくっきりのっぺり」で気持ち悪い気もする)
		this.applyFilter(this, new Rectangle(0, 0, w, h), new Point(0, 0), new BlurFilter(1.1, 1.1, 2));
	}
}