2011-04-14 89 views
2

我試圖拖放整個SkinnableContainer-對象跨我一個非常奇怪的問題來flex-拖放

的下降只在少數地方 - 發生在其他地方,它只是顯示「X」標誌並在那裏下降,恢復到原來的位置。我已經使用了非常標準的命令...從函數2到函數3,這個調用很少發生在跟蹤語句中 - 對於爲什麼會發生這種情況的任何指導?

添加以下代碼來SkinnableContainer:dragEnter="dragEnterHandler(event);" dragDrop="dragDropHandler(event);

(1)

private function mouseMoveHandler(event:MouseEvent):void  
{ 
    var dragInitiator:Image = Image(event.currentTarget); 
    var ds:DragSource = new DragSource();  
    ds.addData(dragInitiator,"img"); //made change here  
    DragManager.doDrag(dragInitiator, ds, event); 
} 

(2)

private function dragEnterHandler(event:DragEvent):void { 

if (event.dragSource.hasFormat("img")) 
{ 
    trace("came here"); //comes here for each mouse move  
    DragManager.acceptDragDrop(SkinnableContainer(event.currentTarget)); 
} 

(3)

private function dragDropHandler(event:DragEvent):void {  
trace("in drag drop handler"); //doesn't come here for most places 
+0

您沒有顯示有關拖動開始位置的代碼。 – 2011-04-14 19:32:29

+0

問題到底是什麼?所有我從你發佈的內容中得到的是你想知道的是爲什麼2個函數只被稱爲「非常罕見」 – 2011-04-14 20:50:55

+0

我知道我的問題很糟糕 - 想不到更好的方式來構建不一致的行爲......反正Merv在錢上是對的 – RG1967 2011-04-15 18:51:46

回答

2

按照Using Flex 4參考:

要使用容器作爲放置目標,則必須使用容器的backgroundColor屬性來設置顏色。否則,容器的背景顏色是透明的,並且拖放管理器無法檢測到鼠標指針位於可能的放置目標上。

在隨後的例子中,它們使用MX容器(Canvas),但我檢查了AS3參考,和spark.components.SkinnableContainer確實有一個風格backgroundColor

我自己沒有嘗試過,所以請確認是否是問題所在。根據您的描述,只有容器的某些部分正在註冊dragEnter事件,這似乎是一個會導致此類影響的考慮因素。

+0

是的 - 一旦我爲可換膚容器添加背景顏色,下拉列表的行爲非常一致 – RG1967 2011-04-15 02:06:27