zバッファの面の傾きを求める実験
// forked from nabe's 球面っぽい塗り
// forked from nabe's ソースの雛形
package {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import flash.filters.*;
[SWF(width="465", height="465", backgroundColor="0xAABBCC", frameRate="1")];
public class BaseClass extends Sprite {
private var W_:uint;
private var H_:uint;
public function BaseClass () {
//コンストラクタ。ここから全体の処理が開始する。
//1.初期化処理の呼び出しを仕込むに留める。
addEventListener(Event.ADDED_TO_STAGE, init_);
}
private function init_ (event_:Event):void {
//初期化処理。
//1.用済みのリスナ登録を解除する。
event_.target.removeEventListener(event_.type, arguments.callee);
//2.実際の処理を書き足す。
sample_();
}
private function sample_ ():void {
//サンプル処理。
//1.画面サイズを取得する。
W_ = stage.stageWidth;
H_ = stage.stageHeight;
//2.画面中央の位置を求める。
var x_:uint = W_>>1;
var y_:uint = H_>>1;
//3.縦横の長さの短い方を選ぶ。
var r_:uint = x_ < y_ ? x_ : y_;
//4.円を描画する。
for (var i_:uint = 0; i_ < 0x100; i_++) {
//階調の方をループ変数として、そこから半径を逆算してみた。
var r2:Number = r_ * Math.cos(Math.asin(i_ / 0x100));
graphics.beginFill(0x010101 * i_);
graphics.drawCircle(x_, y_, r2);
graphics.endFill();
}
//5.微分フィルタの実験。
var filter_:ConvolutionFilter = new ConvolutionFilter(
3, 1, [
1, 0, -1
], 1/16, 0x80, true, true
);
filters = [filter_, new BlurFilter(4, 4, 1)];
}
}
}