それはそのようになります非常に素晴らしいJMPがフレームボックスにサンプルアンドホールドタイプの表示を許可するかどうか。具体的には、それらは 1 回レンダリングされ、サイズ変更イベント、行状態の変更 (テーブルの行状態にリンクされているマーカー セグメントの場合)、または <<
私が見たいのは、以下の例のスクリプトが複数回印刷されないようにすることですスクロール中-- 最初のレンダリング中、それだけです (これは、マーカー セグメントが存在する場合にも適用されます)。
これの主な理由は、何百万ものデータ ポイントを含む多くのグラフをプロットしている場合、最初のレンダリング (予想される) を数秒待つことは問題ありませんが、すべてのスクロール イベントで数秒のレンダリングが必要になることは受け入れられないためです。 -- レンダリングを 1 回だけ行い、スクロール時にビットマップを別の場所に再描画します。
注: 開発者が RAM にビットマップを保持することによるメモリ消費を心配している場合でも、心配する必要はありません。ボックスをセットアップするときに、ユーザーがそのことを心配できるようにします。たとえば、レンダリングするために 1,000,000,000 x 1,000,000,000 ピクセルのプロットを作成しようとすると、JMP をクラッシュさせてしまいます。ばかげた状況で JMP をクラッシュさせる可能性があるという理由だけで、必要な機能を提供することを妨げてはなりません。オプトインのみを許可します (つまり、<
繰り返しますが、FrameBox に (<
現在の悪い動作の例を次に示します。数字は複数回出力され、スクロール イベントごとにレンダリング パスが発生することを示しています。
Names Default to Here( 1 );
New Window( "Test",
V Scroll Box(
vlb = V List Box()
)
);
For( i = 1, i <= 100, i++,
Eval( Eval Expr(
vlb << Append(
Graph Box(
X Scale( 0, 1 ),
Y Scale( 0, 1 ),
Pen Color( "Blue" );
Line( [1 0], [0 1] );
Print( Expr( i ) )
)
)
) )
)
これは、この「スクロールイベントごとに再レンダリング」/「あらゆる機会に再レンダリング」に関連する許容できない待機時間の例です (ここをスクロールしてみてください...)
Names Default to Here( 1 );
ns = New Namespace();
ns:table = New Table( "TEST",
New Column( "X", "Numeric", <<FORMULA></FORMULA>