天天看點

flex list/tilelist drag scroll的speed移動太快

  最近項目中遇到tilelist中拖拽的時scroll的移動速度太快,導緻無法準确定位到某一行。Gosh!經過近4天終于找到解決方案。

  1。首先override TileList的dragScroll方法,新的方法中将不做任何操作;

  2。找到拖拽的dragProxy也即拖拽時展現的image,讓其監聽mouseMove方法,将stage.mouseY儲存在成員變量中;

  3。拖拽的時候啟動一個定時器,設為每1秒鐘執行一次,在執行方法中判斷stage.mouseY,如果小于TileList的上邊緣,滾動條上移一個機關,如果大于TileList的下邊緣,滾動條下移一個機關。

  部分代碼如下:

  

  

  

  Array = myTile.selectedItems;

  if(tempData.length 300){

  value = myTile.verticalScrollPosition + 1;

  myTile.verticalScrollPosition = Math.min(myTile.maxVerticalScrollPosition,value);

  }

  }

  private function proxyMoveHandler(event:MouseEvent):void {

  trace(event.stageX+"x:----------------y:"+event.st ageY);

  dragOjbY = event.stageY;

  }

  private function tileMouseDown(event:MouseEvent):void {

  var target:ScrollThumb = event.target as ScrollThumb;

  if(target){

  trace("不進行拖拽---------滾動條-------");

  canDrag = false;

  return;

  }

  canDrag = true;

  }

  private function upHandler(event:MouseEvent):void {

  if(dragTimer.running){

  dragTimer.stop();

  dragTimer.removeEventListener(TimerEvent.TIMER,dra gTimerHandler);

  }

  }

  private function tileDragEnterHandler(event:DragEvent):void {

  DragManager.acceptDragDrop(event.target as UIComponent);

  }

  ]]>