「我試圖重寫 MX的 updateDisplayList()方法:Canvas組件,但似乎 只更新 拖動後圖紙,我想爲行 跟隨mx:面板正在被拖動。「 」。
你可以聽在小組MoveEvent.MOVE
事件,並有處理程序調用該行重新劃分,然後讓小組調度這些事件,而他們正在被監聽舞臺MouseEvent.MOUSE_MOVE
事件和拖在處理程序分派MOVE
事件(此處理程序附加到在該小組的MouseEvent.MOUSE_DOWN
事件處理程序中的階段,處理程序沿着MouseEvent.MOUSE_UP
(附連到級爲好) - 然後從階段在MOUSE_UP
除去這兩個事件偵聽處理程序。)
下面是一個例子(這將是在面板s第ubclass :)
private function attachListeners():void
{
this.addEventListener(MouseEvent.MOUSE_DOWN, selfMouseDownHandler, false,0,true);
this.addEventListener(MoveEvent.MOVE, selfMoveHandler, false,0,true);
}
private function selfMoveHandler(event:MoveEvent):void
{
redrawConnectedLinks();
}
private function selfMouseDownHandler(event:MouseEvent):void
{
stage.addEventListener(MouseEvent.MOUSE_UP, stageMouseUpHandler, false,0,true);
stage.addEventListener(MouseEvent.MOUSE_MOVE, stageMouseMoveHandler, false,0,true);
}
private function stageMouseUpHandler(event:MouseEvent):void
{
stage.removeEventListener(MouseEvent.MOUSE_UP, stageMouseUpHandler, false);
stage.removeEventListener(MouseEvent.MOUSE_MOVE, stageMouseMoveHandler, false);
}
private function stageMouseMoveHandler(event:MouseEvent):void
{
dispatchEvent(new MoveEvent(MoveEvent.MOVE));
}
Humm ...這似乎與以前的解決方案類似。它只在我「放下」面板時才更新,而不是在移動時更新。 – bgoncalves 2008-12-03 03:58:52
(你可以通過添加跟蹤到coordsChangedHandler()函數來測試它) – bgoncalves 2008-12-03 04:11:56