JMP でフレーム ボックスの表示をサンプル アンド ホールド方式にできれば非常に便利です。具体的には、フレーム ボックスは一度レンダリングされ、サイズ変更イベント、行状態の変更 (テーブルの行状態にリンクされているマーカー セグメントの場合)、または < <<>
私が見たいのは、以下のサンプル スクリプトで、スクロール中に数字を複数回印刷しないことです (最初のレンダリング中のみ) (マーカー セグメントが存在する場合は、これにも適用されます)。
その主な理由は、数百万のデータ ポイントを含むグラフを多数プロットする場合、最初のレンダリングに数秒待つのは気になりませんが (これは想定内です)、スクロール イベントごとに数秒のレンダリングが必要になるのは受け入れられません。レンダリングは 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>
<P> </P>
<P> </P>
<P> </P>やあ@ErraticAttack 、 提案ありがとう! ご要望を承りましたので、検討させていただきます。
素晴らしい例です。
素晴らしい: JMP はどのフレームボックスが表示されているかを認識し、他のフレームボックスをスキップします。