我正在尝试创建Adobe Air应用程序,其中我需要以下组件:
请允许我详细说明这个模型:
每侧有2个面板,这些面板内的物品可以相互拖放,就像在2个文件夹中移动物品一样。几个教程已经显示了一个带
的列表dragEnabled = "true"
dropEnabled = "true"
dragMoveEnabled = "true"
将完成这项工作。然而,这是关键部分。我希望列表中的项目具有这样的结构:我在左边有一个图像,右边的TextArea如上所述。当用户拖动这个“结构化项目”时,无论用户最初在哪里拖动这个“结构化项目”,我都希望将整个事物放在一起,这意味着如果用户点击图像并将其拖放到另一方面,这个“结构化项目”将出现在另一边。如果用户拖动TextArea,则应该发生同样的事情。
TextArea是滚动面板内部的“结构化项目”的一部分,也应允许用户滚动其文本。
那么我们如何在Adobe Air中做到这一点?
答案 0 :(得分:2)
Flextras是对的。最好是展示你为尝试不同的事情并试图自己解决问题所付出的努力。但是,今天我心情很好,所以你去吧:)。
主要应用:
import mx.collections.ArrayCollection;
[Bindable]
private var list1Array:ArrayCollection = new ArrayCollection([
{text: "a"},
{text: "b"},
{text: "c"},
{text: "d"},
{text: "e"}]);
[Bindable]
private var list2Array:ArrayCollection = new ArrayCollection();
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:HGroup>
<s:List dataProvider="{list1Array}" dragEnabled="true" dragMoveEnabled="true" dropEnabled="true" itemRenderer="listItemRenderer"/>
<s:List dataProvider="{list2Array}" dragEnabled="true" dragMoveEnabled="true" dropEnabled="true" itemRenderer="listItemRenderer"/>
</s:HGroup>
</s:Application>
的ListItemRenderer:
<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
autoDrawBackground="true">
<fx:Script>
<![CDATA[
private function updateData():void
{
data.text = textArea.text;
}
]]>
</fx:Script>
<s:HGroup>
<mx:Image width="50" height="50"/>
<s:TextArea id="textArea" text="{data.text}" change="updateData()"/>
</s:HGroup>
</s:ItemRenderer>