酷得到它的工作...所以我缺少的是接受對dragEnter事件拖累步驟這裏是全碼:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.core.IUIComponent;
import mx.events.DragEvent;
import mx.managers.DragManager;
import spark.components.Panel;
private function dragDrop(e:DragEvent): void {
var userPanel:Panel = new Panel();
userPanel.width = 100;
userPanel.height = 100;
userPanel.x = 10;
userPanel.y = 10;
userPanel.visible = true;
addElement(userPanel);
}
protected function canvas1_dragEnterHandler(event:DragEvent):void
{
// TODO Auto-generated method stub
DragManager.acceptDragDrop(event.currentTarget as IUIComponent);
}
]]>
</fx:Script>
<mx:Canvas dragEnter="canvas1_dragEnterHandler(event)" dragDrop="dragDrop(event)" width="100%" height="100%" backgroundColor="blue"/>
<s:List dataProvider="{new ArrayCollection(['a','item','in','here'])}" dragEnabled="true"/>
</s:Application>
肖恩
需要更多的細節是什麼它似乎並不奏效的意思是,它打一個斷點在代碼,代碼註冊到的是哪個偵聽器?這將創建一個新的面板,如果運行使用Flex 3的味道,如果4您需要使用addElement,但我相信這是一個編譯時錯誤。 – shaunhusain 2011-02-23 18:12:13
對不起,「它不工作」我的意思是它不會添加(至少顯示)新創建的面板。我會給addElement一個嘗試。 – Dennis 2011-02-23 18:16:04
沒問題只是一個匆忙的問題我敢肯定,我沒有注意到你在問題標題中有flex 4,希望addElement適用於你(還要注意很多樣式在4中被刪除,所以你可能需要設置一個背景顏色或面板上的這些線條的東西,或像userPanel.graphics.beginFill(0xff0000); userPanel.graphics.drawRect(0,0,20,20);只是爲了確保你看到的東西 – shaunhusain 2011-02-23 18:21:37