代码之家  ›  专栏  ›  技术社区  ›  Knickerless-Noggins

在hdividedbox中一次移动多个分隔符

  •  0
  • Knickerless-Noggins  · 技术社区  · 14 年前

    我正在尝试在图表下面有一个可拖动的视区的小地图显示。我基本上用它来控制图表的视区:

    <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毫秒的超时,两个分隔符都会移动。然而,这似乎是一个相当笨拙的方法来处理这一问题,并且容易出错。

    有人知道是否可以同时移动hdividebox中的两个分隔符,或者我应该采取另一种方法吗?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Knickerless-Noggins    14 年前

    最后需要使用calllater调用其他分隔符上的更新,而不是立即调用它。

    推荐文章