Как бы я создал панель для перетаскивания во Flex 4? - PullRequest
0 голосов
/ 23 февраля 2011

Я пытаюсь перетащить компонент, и я хочу, чтобы он создал панель.Вот сценарий действий, который у меня есть, но он, похоже, не работает, есть идеи, почему?

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;
    addChild(userPanel);
}

Ответы [ 2 ]

1 голос
/ 23 февраля 2011

Код, который вы указали, действителен.Правильно ли настроен инициатор перетаскивания?Настроена ли цель перетаскивания для приема перетаскивания?

Вот некоторый код, который добавит панель к canvas1 при перетаскивании canvas2 в canvas1:

protected function canvas2_dragStartHandler(event:MouseEvent):void {
    var dragInitiator:Canvas=Canvas(event.currentTarget);
    var ds:DragSource = new DragSource();              

    DragManager.doDrag(dragInitiator, ds, event);
}

protected function canvas1_dragEnterHandler(event:DragEvent):void {
    DragManager.acceptDragDrop(Canvas(event.currentTarget));
}

protected function canvas1_dragDropHandler(event:DragEvent):void {
    var userPanel:Panel = new Panel();
    userPanel.width = 100;
    userPanel.height = 100;
    userPanel.x = 10;
    userPanel.y = 10;
    userPanel.visible = true;
    Canvas(event.currentTarget).addChild(userPanel);
}
0 голосов
/ 23 февраля 2011

Круто, все заработало ... так что я пропустил шаг, приняв перетаскивание на событие 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>

Shaun

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...