JMP에서 프레임 상자에 샘플 앤 홀드 유형의 디스플레이를 허용하면 매우 좋을 것입니다. 구체적으로, 프레임 상자는 한 번만 렌더링되고 크기 조정 이벤트, 행 상태 변경(테이블의 행 상태에 연결된 모든 마커 세그먼트의 경우) 또는 <를 전송하여 다시 렌더링되어야 합니다. <<>
제가 보고 싶은 것은 아래 예제 스크립트가 스크롤하는 동안 숫자를 두 번 이상 인쇄하지 않는 것입니다(최초 렌더링 중에만 그렇고, 마커 세그먼트가 있는 경우에도 마찬가지입니다).
그 주된 이유는 수백만 개의 데이터 포인트로 많은 그래프를 그린다면 초기 렌더링을 위해 몇 초를 기다리는 것은 상관없지만(이는 예상된 일이지만) 모든 스크롤 이벤트에 몇 초의 렌더링이 필요하다는 것은 용납할 수 없기 때문입니다. 한 번만 렌더링하고 스크롤할 때 다른 위치에 비트맵을 다시 그리면 됩니다.
참고: 개발자가 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는 어떤 프레임박스가 보이는지 알고 나머지는 건너뜁니다.