0
차트 아래에 드래그 가능한 뷰포트가있는 미니 맵 디스플레이가 있어야합니다. 나는 기본적으로이 차트의 뷰포트를 제어 할 수있다 : 다음 스크립트HDividedBox에서 한 번에 둘 이상의 분할 자 이동
<mx:annotationElements>
<mx:HDividedBox id="dividedBox" horizontalScrollPolicy="off" width="100%" height="100%" liveDragging="true" borderSides="bottom top">
<mx:Canvas id="leftBox" backgroundColor="#FFFFFF" backgroundAlpha="0.5" width="50%" height="100%" borderColor="#333333" borderThickness="1" borderStyle="solid" borderSides="top right bottom" />
<mx:Canvas id="centerBox" backgroundColor="#FFFFFF" backgroundAlpha="0" width="50%" height="100%" buttonMode="true" minWidth="100" mouseDown="rangeWindowMouseHandler(event);" mouseUp="rangeWindowMouseHandler(event);" mouseMove="rangeWindowMouseHandler(event);" />
<mx:Canvas id="rightBox" backgroundColor="#FFFFFF" backgroundAlpha="0.5" width="0%" height="100%" borderColor="#333333" borderThickness="1" borderStyle="solid" borderSides="top left bottom" />
</mx:HDividedBox>
</mx:annotationElements>
:
private function rangeWindowMouseHandler(event:MouseEvent):void {
if(event.target === centerBox) {
var coords:Object = rangeDragCoordinates;
switch(event.type.toLowerCase()) {
case 'mousedown':
rangeDrag = true;
break;
case 'mouseup':
rangeDrag = false;
break;
case 'mousemove':
if(rangeDrag) {
var xDiff:Number = -(coords.x - event.stageX) * 4.0;
for(var i:Number = 0; i < dividedBox.numDividers; i++) {
dividedBox.moveDivider(i, xDiff);
}
}
break;
}
coords.x = event.stageX;
coords.y = event.stageY;
}
}
문제는 하나의 분할은 실제로 한 번에 이동합니다. 나는 두 디바이더가 움직이는 다음 디바이더를 움직이기 전에 약 50ms의 타임 아웃을 설정했다. 그러나 이것은 이것에 접근하는 다소 어색한 방법처럼 보이고 오류가 발생하기 쉽습니다.
HDividedBox에서 2 개의 디바이더를 동시에 움직일 수 있는지 또는 다른 접근 방법을 사용해야합니까?
"한 번에 하나의 칸막이 만 실제로 움직입니다"라고 말하면 첫 번째 칸이 나간 후 다른 칸이 "따라 잡는다"는 뜻입니까? – Robusto
아니요, 하나만 움직입니다. – illvm