Es wäre außerordentlich toll , wenn JMP Rahmenboxen eine Sample-and-Hold-Anzeige ermöglichen würde. Insbesondere sollten sie einmal gerendert und nur für Dinge wie Größenänderungen, Zeilenstatusänderungen (für alle Markierungssegmente, die mit dem Zeilenstatus einer Tabelle verknüpft sind) oder durch Senden des < <<>
Ich möchte, dass das folgende Beispielskript beim Scrollen keine Zahl mehr als einmal ausgibt – während des ersten Renderns und das war’s (dies würde auch für Markierungssegmente gelten, falls vorhanden).
Der Hauptgrund hierfür besteht darin, dass es mir beim Zeichnen vieler Diagramme mit Millionen von Datenpunkten nichts ausmacht, mehrere Sekunden auf das erste Rendern zu warten (was auch zu erwarten ist), es jedoch inakzeptabel ist, dass jedes Bildlaufereignis mehrere Sekunden Renderzeit erfordert – rendern Sie nur einmal und zeichnen Sie die Bitmap beim Scrollen einfach an einer anderen Stelle neu.
HINWEIS: Wenn die Entwickler sich Sorgen über den Speicherverbrauch beim Speichern von Bitmaps im RAM machen – KEINE SORGEN. Lassen Sie den Benutzer sich darum kümmern, wenn er die Boxen einrichtet. Wenn ich beispielsweise versuche, ein Diagramm zu erstellen, das 1.000.000.000 x 1.000.000.000 Pixel groß wäre, lassen Sie mich es versuchen und JMP abstürzen. Sie sollten uns nicht daran hindern, die erforderliche Funktion zu haben, nur weil wir dadurch unter dummen Umständen JMP zum Absturz bringen könnten. Lassen Sie es nur optional sein (d. h. nur durch Aufrufen von <
Um es noch einmal zu wiederholen: Es wäre toll, wenn eine FrameBox eine Methode hätte (wie <
Hier ist ein Beispiel für das aktuelle Fehlverhalten – die Zahlen werden mehrfach ausgegeben, was darauf hinweist, dass der Rendering-Durchgang bei jedem Scroll-Ereignis erfolgt:
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 ) )
)
)
) )
)
Hier ist ein Beispiel für die inakzeptable Wartezeit, die mit diesem „bei jedem Scroll-Ereignis erneut rendern“ / „bei jeder möglichen Gelegenheit erneut rendern“ verbunden ist (versuchen Sie einfach, hier durchzuscrollen …).
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>Hi @ErraticAttack , Danke für deinen Vorschlag! Wir haben Ihre Anfrage erfasst und werden sie berücksichtigen.
Ein hervorragendes Beispiel.
Großartig: JMP erkennt, welche Frameboxen sichtbar sind und überspringt die anderen.