Es wäre außergewöhnlich toll wenn JMP Frameboxen erlauben würde, eine Sample-and-Hold-Anzeige zu haben.Insbesondere sollten sie einmal gerendert werden und nur für Dinge wie Resize-Ereignisse, Zeilenstatusänderungen (für alle Markierungssegmente, die mit dem Zeilenstatus einer Tabelle verknüpft sind) oder durch Senden der <<
Was ich gerne sehen würde, ist, dass das folgende Beispielskript keine Zahl mehr als einmal druckt beim Scrollen -- während des anfänglichen Renderns und das war's (dies würde auch für Marker-Segmente gelten, falls vorhanden).
Der Hauptgrund dafür ist, dass es mir nichts ausmacht, mehrere Sekunden auf das anfängliche Rendern zu warten (was erwartet wird), wenn ich viele Diagramme mit Millionen von Datenpunkten zeichne, aber es ist nicht akzeptabel, dass jedes Scroll-Ereignis mehrere Sekunden des Renderns erfordert -- nur einmal rendern und beim Scrollen einfach die Bitmap an einer anderen Stelle neu zeichnen.
HINWEIS: Wenn die Entwickler sich Sorgen über den Speicherverbrauch beim Speichern von Bitmaps im RAM machen, machen Sie sich keine Sorgen.Lassen Sie den Benutzer sich darum kümmern, wenn Sie die Boxen einrichten.Wenn ich zum Beispiel versuche, einen Plot zu erstellen, der 1.000.000.000 x 1.000.000.000 Pixel zum Rendern hätte, dann lass es mich versuchen und JMP zum Absturz bringen.Sie sollten uns nicht daran hindern, die notwendige Funktion zu haben, nur weil es uns erlauben könnte, JMP unter dummen Umständen zum Absturz zu bringen.Nur Opt-in zulassen (dh nur durch Aufrufen der <
Nur um es noch einmal zu wiederholen, es wäre großartig, wenn eine FrameBox eine Methode (wie <
Hier ist ein Beispiel für das derzeitige schlechte Verhalten – die Zahlen werden mehrmals gedruckt, was darauf hinweist, dass der Rendering-Durchgang bei jedem Scroll-Ereignis stattfindet:
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 durchzublättern ...)
Names Default to Here( 1 );
ns = New Namespace();
ns:table = New Table( "TEST",
New Column( "X", "Numeric", <<FORMULA></FORMULA>