最近項目中遇到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);
}
]]>