5/12/2009

flex DragManager

在flex 裡面要做drag,除了幾個原來就有implement drag的controller以外,
還可以利用DragManager來處理

假設物件A要拖到容器B裡面,用Drag Manager的話,最基本的用法就是:

  1. B listen DRAG_ENTER 事件
  2. B listen DRAG_DROP 事件
  3. A listen MOUSE_MOVE 事件
我在網路上找到了一個很好sample code: flex 2 Drag and Drop 練習

然而實作的時候卻發現一個大問題
假設我的容器B長這樣:
<mx:Canvas id="playground" width="300" height="300"></mx:Canva>
測試時發現, DRAG_ENTER完全沒有被觸發!!!不死心繼續找,終於在某次發現是background,是background啊!!

只要在attribute裡面設定了backgroundColor或backgroundImage,就可以讀得到了!!!
如果不設background只設border,那只有在經過border(有畫出來的時候)才會觸發DRAG_ENTER event!!!!


所以這時候就出現一個問題了,如果我就是不要background怎麼辦,
目前我只能用繞道的方式解決,也就是除了設定background以外,另外再加上:
backgroundAlpha="0"

呼!!

0 comments: