#apache-flex #actionscript
#apache-flex #actionscript
Вопрос:
это код для 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="images8.png"
width="128" height="76"
mouseMove="mouseDownHandler(event)"
id="image"
/>
<mx:Image source="images10.jpg"
width="110" height="87"
mouseMove="mouseDownHandler(event)"/>
<mx:Image source="images9.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:
В этом случае вы привязываете цель эффекта. Простое переключение идентификатора с одного компонента на другой на самом деле не сработает. Ссылка на исходное изображение — это то, что на самом деле привязано. Вам было бы лучше программно переключить цель эффекта в методе DropHandler.
// DON'T DO THIS
newImage.id=draggedImage.id;
// DO THIS
rotate3DY.target = newImage;
rotate3DZ.target = newImage;
Комментарии:
1. я могу повернуть последнее удаленное изображение в canvas .. теперь я хочу выбрать одно изображение из нескольких изображений и повернуть это конкретное изображение .. вы можете мне в этом помочь?
2. У вас должен быть способ определить, какое изображение вы хотите выбрать. Например, вы могли бы щелкнуть и изображение, а в clickHandler вы могли бы установить целью эффектов это изображение. Короче говоря — просто убедитесь, что в эффектах задана цель для изображения, которое вы действительно хотите повернуть.