Перемещение более одного делителя за раз в HDividedBox - PullRequest
0 голосов
/ 22 марта 2010

Я пытаюсь отобразить мини-карту с перетаскиваемым окном просмотра под графиком. По сути, у меня есть это для управления окном просмотра диаграммы:

<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;
    }
   } 

Проблема в том, что на самом деле перемещается только один делитель за раз. Я обнаружил, что, если перед установкой следующего делителя установить тайм-аут около 50 мс, оба делителя перемещаются. Тем не менее, это кажется довольно неловким способом приблизиться к этому и подвержен ошибкам.

Кто-нибудь знает, возможно ли одновременно переместить два разделителя в HDividedBox или я должен использовать другой подход?

1 Ответ

1 голос
/ 06 мая 2010

Закончилась необходимость вызывать обновления на других разделителях, используя callLater, а не вызывать их немедленно.

...