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

zバッファの面の傾きを求める実験

Get Adobe Flash player
by nabe 02 Jan 2009
    Embed
// 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)];
        }

    }

}