Apache flex 在HDividedBox中一次移动多个分隔器
我正在尝试在图表下方显示一个带有可拖动视口的小地图。我基本上可以控制图表的视口:Apache flex 在HDividedBox中一次移动多个分隔器,apache-flex,flex-charting,Apache Flex,Flex Charting,我正在尝试在图表下方显示一个带有可拖动视口的小地图。我基本上可以控制图表的视口: <mx:annotationElements> <mx:HDividedBox id="dividedBox" horizontalScrollPolicy="off" width="100%" height="100%" liveDragging="true" borderSides="bottom top"> <mx:Canvas id="leftBox" backgr
<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;
}
}
私有函数rangeWindowMouseHandler(事件:MouseEvent):void{
如果(event.target==centerBox){
变量坐标:对象=范围坐标;
开关(event.type.toLowerCase()){
案例“mousedown”:
rangeDrag=true;
打破
“鼠标”一案:
rangeDrag=false;
打破
案例“mousemove”:
如果(范围拖动){
var xDiff:Number=-(coords.x-event.stageX)*4.0;
对于(变量i:Number=0;i
问题是,实际上一次只移动一个分隔器。我发现,如果我在移动下一个分配器之前设置了大约50毫秒的超时,那么两个分配器都会移动。然而,这似乎是一种相当尴尬的方法,而且容易出错
有人知道是否可以同时移动硬盘盒中的两个分隔器,或者我应该采取另一种方法吗?最后需要使用callLater调用其他分隔器上的更新,而不是立即调用它。当你说“一次只移动一个分隔器”时,你的意思是另一个“赶上”了吗在你放开第一个分隔符之后?