2007/03/21(水)

プライマリレイヤにltAddAlphaを指定すると…… このエントリをはてなブックマークに追加 

Filed under: ゲーム制作,吉里吉里 — KAY @ 02:46:39

2.28安定版での話です。
とりあえず、以下のテストスクリプトを実行してみて下さい。

class TestWindow extends Window {
    var timer;
    var primary;
    var counter = 0; 

    //コンストラクタ
    function TestWindow() {
        super.Window();
        borderStyle = bsSingle;
        innerSunken = false;
        setInnerSize(300, 300);
        visible = true; 

        timer = new Timer(createLayer, "");
        timer.capacity = 1;
        timer.interval = 50;
        add(timer); 

        primary = new Layer(this, null);
        primary.setPos(0, 0);
        primary.setSize(300, 300);
        primary.fillRect(0, 0, 300, 300, 0xffffffff);
        primary.type = ltAddAlpha;          //●
        primary.visible = true;
        add(primary);
    } 

    //デストラクタ
    function finalize() {
        super.finalize();
    } 

    function createLayer() {
        if(++counter > 100) {
            timer.enabled = false;
            return;
        }
        var layer = new Layer(this, primary);
        layer.setPos(0, 0);
        layer.setSize(150, 300);
        layer.visible = true;
        add(layer);
    }
} 

var win = new TestWindow();
win.timer.enabled = true;

↓こちらからダウンロードできます。
startup.tjs

50msごとにウィンドウの左半分にレイヤを1枚ずつ重ねていき、100枚になったら停止する、というだけのものです。
これは……バグなのかなあ。仕様? まあ、プライマリレイヤなんだから完全不透明なレイヤタイプを使えという事ですかね。

(2007/03/28追記)

公式の掲示板でW.Deeさんよりご回答いただきました。

http://kikyou.info/tvp/bbs/bbs.cgi?mode=&action=treeall&num=10082

というわけで、演算誤差が原因との事でした。まあ、プライマリレイヤはltOpaqueで十分だと思うので、特に問題はない、かな?
プライマリ以外は……どうだろう。多分大丈夫だと思うけど。

コメント(0)

コメントはまだありません。

トラックバック(0)

この記事へのトラックバックはありません。

この投稿へのコメントの RSS フィード。

現在、コメントフォームは閉鎖中です。