Flex - перетащите для FXG - PullRequest
       23

Flex - перетащите для FXG

1 голос
/ 27 апреля 2011

Я строю гибкий проект, включающий перетаскивание графики FXG

мой график создается как показано ниже

  <graphics:arrow2 id="object" mouseMove="mouseMoveHandler(event);" />

Я получаю сообщение об ошибке: «Вызов возможно неопределенного метода Graphic.»

Это работает, если я изменяю свой перетаскиваемый объект на Изображение и заменяю 'Графика' ниже на 'Изображение' Что я должен использовать, чтобы иметь возможность ссылаться на изображение fxg в drag-drop?

моя функциональность перетаскивания выглядит следующим образом

private function mouseMoveHandler(event:MouseEvent):void
        {
                            var dragInitiator:Graphic = Graphic(event.currentTarget);
            var ds:DragSource = new DragSource();
            ds.addData(dragInitiator,"gph");
            DragManager.doDrag(dragInitiator, ds, event);

        }
        private function dragEnterHandler(event:DragEvent):void {

            if (event.dragSource.hasFormat("gph"))
            {
           DragManager.acceptDragDrop(SkinnableContainer(event.currentTarget));
            }

        }

        private var objectX:Number;


        private function dragDropHandler(event:DragEvent):void {

            objectX= SkinnableContainer(event.currentTarget).mouseX+50;


            Graphic(event.dragInitiator).x = objectX;
            Graphic(event.dragInitiator).y = 100;

        }

1 Ответ

0 голосов
/ 27 апреля 2011

Это пример взят из SaturnBoy :

<s:Application
        xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:s="library://ns.adobe.com/flex/spark">

    <fx:Script>
        <![CDATA[
            imports...

            private function mouseDownHandler(e:MouseEvent):void {
                DragManager.doDrag(e.currentTarget as IUIComponent, null, e);
            }

            private function dragEnterHandler(e:DragEvent):void {
                DragManager.acceptDragDrop(e.currentTarget as IUIComponent);
            }

            private function dragDropHandler(e:DragEvent):void {
                e.currentTarget.addElement(e.dragInitiator);
            }
        ]]>
    </fx:Script>

    <s:Panel title="src" width="100" minHeight="133" x="10" y="10">
        <s:Graphic width="80" height="80"
                mouseDown="mouseDownHandler(event)">
            <s:Rect ... </s:Rect>
        </s:Graphic>

        <s:Graphic width="80" height="80"
                mouseDown="mouseDownHandler(event)">
            <s:Ellipse ... </s:Ellipse>
        </s:Graphic>
        ...
    </s:Panel>

    <s:Panel title="target" width="100" minHeight="133" x="120" y="10"
            dragEnter="dragEnterHandler(event);"
            dragDrop="dragDropHandler(event);">
        ...
    </s:Panel>
</s:Application>
...