2

製品を表す画像のリストを表示するスパーク リストがあります。ユーザーが購入したい製品をリストからキャンバス領域にドラッグして、購入する前に選択した製品を確認できるドラッグアンドドロップ機能を実装しようとしています。私は以下のコードを使用していますが、何が問題なのかわかりません。リスト項目をドラッグ開始者として使用できないようです。誰か助けてください:

プライベート関数 onMouseDown( event : MouseEvent ) : void {

                var list:List = List(event.currentTarget);
                var dragInitiator:Image = Image (list.selectedItem);
                var source : DragSource = new DragSource();
                source.addData(dragInitiator, "img");
                DragManager.doDrag(dragInitiator, source, event);

        }



        protected function canvas1_dragEnterHandler(event:DragEvent):void
        {

                DragManager.acceptDragDrop(Canvas(event.currentTarget));


        }

        protected function canvas1_dragDropHandler(event:DragEvent):void
        {
            Image(event.dragInitiator).x = 
                Canvas(event.currentTarget).mouseX;
            Image(event.dragInitiator).y = 
                Canvas(event.currentTarget).mouseY;  }

    <fx:Model id="categoriesModel" source="Data/Categories.xml"/>
    <s:ArrayList id="CategoriesCollection" source="{categoriesModel.Category}"/>

    <fx:Model id="productsModel" source="Data/Products.xml"/>
    <s:ArrayList id="ProductsCollection" source="{productsModel.Product}" />


</fx:Declarations>

<s:VGroup gap="5"  horizontalAlign="center">

    <s:HGroup gap="5">

        <Components:PROExpressLogo/>
        <s:List id="categoryList"   scroller="{null}"  visible="true"
                itemRenderer="Renderers.categoryItemRenderer" width="700"  borderAlpha="0" 
                change="categoryList_changeHandler(event)">
            <s:layout>
                <s:HorizontalLayout/>
            </s:layout>
        </s:List>   

    </s:HGroup>

    <s:List id="productList"   scroller="{null}" contentBackgroundAlpha="0.4" contentBackgroundColor="0xabcdef"
            itemRenderer="Renderers.productItemRenderer" width="880"  borderAlpha="0" visible="true" horizontalCenter="0" 
             dragEnabled="false" mouseDown="onMouseDown(event)"  
            >   
        <s:layout>
            <s:HorizontalLayout/>
        </s:layout>
    </s:List>

    <s:HGroup gap="20">
        <s:Group>
                <s:Image id="planImage" width="500" height="300" horizontalCenter="0"  
                         toolTip="Drag your items on your Plan and drop them were you plan to install them" 
                         />

                <mx:Canvas width="500" height="300" backgroundAlpha="0.1"
                           backgroundColor="#abcdef" borderColor="#abcdef" borderStyle="inset"
                           contentBackgroundColor="#abcdef" cornerRadius="10"
                           dragDrop="canvas1_dragDropHandler(event)"
                           dragEnter="canvas1_dragEnterHandler(event)" dropShadowVisible="true"
                           horizontalCenter="0"/>
        </s:Group>
                <s:List id="cart" width="200" height="300"/>
    </s:HGroup> 
4

1 に答える 1

0

I 'm thinking you need add drag initiator should be the item renderer that you are dragging rather than the entire List control. Not list.selectedItem that simple object that is not like UIComponent or VisualElement you have to point some ui component like group.

于 2012-12-04T05:50:24.077 に答える