2010-03-22 7 views
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 개의 디바이더를 동시에 움직일 수 있는지 또는 다른 접근 방법을 사용해야합니까?

+0

"한 번에 하나의 칸막이 만 실제로 움직입니다"라고 말하면 첫 번째 칸이 나간 후 다른 칸이 "따라 잡는다"는 뜻입니까? – Robusto

+0

아니요, 하나만 움직입니다. – illvm

답변

1

즉시 호출하는 것이 아니라 callLater를 사용하여 다른 구분선에서 업데이트를 호출해야 할 필요가 있습니다.

관련 문제