Ниже приведен пример кода из модуля, который есть в моем приложении Flex. Я хочу динамически создавать объекты mx.controls.Image и добавлять их на экран. Я хочу, чтобы пользователь мог перемещать их (это работает, как показано ниже) и иметь возможность изменять свой z-индекс, а также записывать новые координаты X и Y после возвращения в базу данных. Как определить, с каким объектом в this.getChildren () является «выбранный» элемент, с которым работает пользователь? Например, когда я добавляю событие MOUSE_OVER, оно не работает.
<?xml version="1.0" encoding="utf-8"?>
import flash.display.DisplayObject;
import flash.events.MouseEvent;
import mx.controls.Image;
public var draggedObject:DisplayObject;
public var selectedObject:DisplayObject;
public var offsetX:Number;
public var offsetY:Number;
public function Add():void
{
var _image:Image = new Image;
_image.source = "myimage.png";
_imagem.x = 100;
_image.y = 100;
_image.addEventListener(MouseEvent.MOUSE_DOWN, startDragging);
_image.addEventListener(MouseEvent.MOUSE_UP, stopDragging);
this.addChild(_image);
}
// This function is called when the mouse button is pressed.
public function startDragging(event:MouseEvent):void
{
// remember which object is being dragged
draggedObject = DisplayObject(event.target);
selectedObject = draggedObject;
// Record the difference (offset) between where the cursor was when
// the mouse button was pressed and the x, y coordinate of the
// dragged object when the mouse button was pressed.
offsetX = event.stageX - draggedObject.x;
offsetY = event.stageY - draggedObject.y;
// move the selected object to the top of the display list
//stage.addChild(draggedObject);
// Tell Flash Player to start listening for the mouseMove event.
stage.addEventListener(MouseEvent.MOUSE_MOVE, dragObject);
}
// This function is called when the mouse button is released.
public function stopDragging(event:MouseEvent):void
{
// Tell Flash Player to stop listening for the mouseMove event.
stage.removeEventListener(MouseEvent.MOUSE_MOVE, dragObject);
}
// This function is called every time the mouse moves,
// as long as the mouse button is pressed down.
public function dragObject(event:MouseEvent):void
{
// Move the dragged object to the location of the cursor, maintaining
// the offset between the cursor's location and the location
// of the dragged object.
draggedObject.x = event.stageX - offsetX;
draggedObject.y = event.stageY - offsetY;
// Instruct Flash Player to refresh the screen after this event.
event.updateAfterEvent();
}
]]>
</mx:Script>
<mx:Button x="83" y="93" label="New Image" click="this.Add()"/>
<mx:Label x="83" y="138" id="label1"/>
<mx:Label x="83" y="164" id="label2"/>