после того, как перетащить изображение с панели на холст, как можно повернуть выбранное изображение на холсте с помощью flex4 - PullRequest
0 голосов
/ 25 мая 2011

это код для 3d вращения

<s:Rotate3D id="rotate3DX"
                    target="{image}"
                    angleXFrom="0"
                    angleXTo="360"
                    duration="2000"
                    autoCenterTransform="true" />


    <s:Rotate3D id="rotate3DY"
                target="{image}"
                angleYFrom="0"
                angleYTo="360"
                duration="2000"
                autoCenterTransform="true" />

    <s:Rotate3D id="rotate3DZ"
                target="{image}"
                angleZFrom="0"
                angleZTo="360"
                duration="2000"
                autoCenterTransform="true" />

</fx:Declarations>

это код для перетаскивания

private function mouseDownHandler(event:MouseEvent):void
            {
                var dragInitiator:Image=Image(event.currentTarget); 
                var ds:DragSource = new DragSource(); 
                ds.addData(dragInitiator, "img"); 
                DragManager.doDrag(dragInitiator, ds, event); 

            }

            private function dragEnterHandler(event:DragEvent):void
            {
                if (event.dragSource.hasFormat("img")) 
                    DragManager.acceptDragDrop(Canvas(event.currentTarget)); 

            }
            private function dropHandler(event:DragEvent):void {
                if (event.dragSource.hasFormat("img")) {
                    var draggedImage:Image = 
                        event.dragSource.dataForFormat('img') as Image;
                    var dropCanvas:Canvas = event.currentTarget as Canvas;

                    // Since this is a copy, create a new object to 
                    // add to the drop target.
                    var newImage:Image=new Image();
                    newImage.source = draggedImage.source;
                    newImage.x = dropCanvas.mouseX;
                    newImage.y = dropCanvas.mouseY;
                    newImage.height=200;
                    newImage.width=200;
                    newImage.addEventListener(MouseEvent.MOUSE_MOVE, mouseDownHandler);
                    newImage.addEventListener(DragEvent.DRAG_COMPLETE, dragCompleteHandler);
                    dropCanvas.addChild(newImage);
                    newImage.id=draggedImage.id;
                }
            }


            public function button1_clickHandler(event:MouseEvent):void
            {
                canvas1.graphics.clear();
            }
            private function dragCompleteHandler(event:DragEvent):void {
                var draggedImage:Image = 
                    event.dragInitiator as Image;
                var dragInitCanvas:Canvas = 
                    event.dragInitiator.parent as Canvas;

                if (event.action == DragManager.MOVE)
                    dragInitCanvas.removeChild(draggedImage);
            }          

изображения

<mx:Panel width="216" height="349" title="Parts" color="#010101"
                      cornerRadius="10">
                <mx:Image source="images\8.png" 
                          width="128" height="76" 
                          mouseMove="mouseDownHandler(event)"
                          id="image"


                         />
                <mx:Image source="images\10.jpg" 
                          width="110" height="87" 
                          mouseMove="mouseDownHandler(event)"/>
                <mx:Image source="images\9.jpg" 
                          width="111" height="88" 
                          mouseMove="mouseDownHandler(event)"/>
            </mx:Panel>

холсткакие изображения отбрасываются:

        <mx:Canvas id="canvas1"
                   height="349" width="1080" 
                   backgroundColor="#BFBDBD"
                   cornerRadius="10"
                   borderColor="#000000"
                   borderVisible="true"
                   dropShadowVisible="true"
                   dragEnter="dragEnterHandler(event)"
                   dragDrop="dropHandler(event)"
                  >




            <mx:ControlBar width="100%" cornerRadius="0">
                <s:Button id="buttonX"
                          label="Rotate3D X-axis"
                          click="rotate3DX.play();" />
                <s:Button id="buttonY"
                          label="Rotate3D Y-axis"
                          click="rotate3DY.play();" />
                <s:Button id="bButtonZ"
                          label="Rotate3D Z-axis"
                          click="rotate3DZ.play();" />
            </mx:ControlBar>

        </mx:Canvas>

Я хочу повернуть изображение после удаления их на холсте. Я могу повернуть их на панели.

1 Ответ

0 голосов
/ 25 мая 2011

В этом случае вы привязываете цель эффекта. Простое переключение идентификатора с одного компонента на другой на самом деле не сработает. Ссылка на исходное изображение - это то, что на самом деле связано. Было бы лучше программно переключить цель эффекта в методе dropHandler.

// DON'T DO THIS
newImage.id=draggedImage.id;

// DO THIS
rotate3DY.target = newImage;
rotate3DZ.target = newImage;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...