2010-03-22 2 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; 
    } 
    } 

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

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

+0

Когда вы говорите, что «только один делитель действительно движется за раз», вы имеете в виду, что другой «догоняет» после того, как вы отпустите первый разделитель? – Robusto

+0

Нет, только один ход. – illvm

ответ

1

Окончание необходимости вызова обновлений на другом разделителе (-ах) с использованием callLater, а не его немедленного вызова.

Смежные вопросы