Как динамически загрузить изображение для перетаскивания? - PullRequest
0 голосов
/ 28 июня 2010

Я реализую перетаскивание из DataGrid в список в приложении Flex 3 AIR.Я хотел бы, чтобы перетаскиваемое изображение представляло собой фотографию (jpg), на которую ссылается поле String в элементе сетки данных с именем 'imagePath'.У меня возникают проблемы с отображением изображения при перетаскивании.Я трижды проверил, что это не из-за неверного пути к изображению.Я пробовал методы Image (source) и load () всеми возможными способами.Я вызываю этот метод «dragCurrentToList (event)» для события mouseDown.

private function dragCurrentToList(event:MouseEvent):void 
{                
    var current:Object = event.currentTarget.selectedItem;

    var dragImg:Image = new Image();
    dragImg.load(current.imagePath);
    dragImg.width = 100; 
    dragImg.width = 100;

    var dsource:DragSource = new DragSource();
    dsource.addData(current, 'record');

    DragManager.doDrag(event.currentTarget as DataGrid, dsource, event, dragImg);
}

Это прекрасно работает, если я устанавливаю источник изображения для следующей привязываемой переменной, но я не хочу жестко кодировать имя изображения.

[Bindable] 
[Embed(source='assets/icons/default.jpg')]
public var dragIcon:Class;

...
dragImg.source = dragIcon
...  

1 Ответ

0 голосов
/ 28 июня 2010

Почему в вашем методе dragCurrentToList вы загружаете изображение, а не просто указываете атрибут источника в качестве URL-адреса изображения?

http://livedocs.adobe.com/flex/3/langref/mx/controls/SWFLoader.html#source

private function dragCurrentToList(event:MouseEvent):void 
{                
    var current:Object = event.currentTarget.selectedItem;

    var dragImg:Image = new Image();
    dragImg.source = current.imagePath;
    dragImg.width = 100; 
    dragImg.width = 100;

    var dsource:DragSource = new DragSource();
    dsource.addData(current, 'record');

    DragManager.doDrag(event.currentTarget as DataGrid, dsource, event, dragImg);
}

Также убедитесь, что вы отвечаете на событие dragStart.(http://livedocs.adobe.com/flex/3/langref/mx/core/UIComponent.html#event:dragStart).И я верю, что вместо доступа к классу DragManager;Вы должны просто изменить свойство dragSource события dragStart.

...