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で十分だと思うので、特に問題はない、かな?
プライマリ以外は……どうだろう。多分大丈夫だと思うけど。