使用可拖动的画布创建TileList时出现问题

时间:2010-11-24 02:03:09

标签: flex flex3

我想创建一个tilelist,其中会有不同的canvas或vbox等,我想让它们拖拽。

我写了一个代码来执行此操作,但输出不会在列表中显示任何内容。

<mx:TileList width="1500" height="1000" dragMoveEnabled="true" 
                selectable="true" selectionColor="#FFFFFF"
                dragEnabled="true" dropEnabled="true" 
                 columnCount="1" rowHeight="160">
        <mx:dataProvider>
            <mx:Array>
                <mx:Canvas width="1450" height="100">
                    <mx:Button label="Testin the buttong"/>
                </mx:Canvas>
                <mx:Canvas width="1450" height="100">
                    <mx:Button label="Testin"/>
                </mx:Canvas>
            </mx:Array>
        </mx:dataProvider>
    </mx:TileList>

我该如何解决这个问题?或者让我知道我在这里做错了什么?

谢谢和问候 Zeeshan

1 个答案:

答案 0 :(得分:0)

您的dataProvider应该包含某种对象。从理论上讲,它们可以是Canvas的实例,但使用可视组件作为dataProvider非常不寻常。您想要做的是阅读itemRenderers。 itemRenderer是一个组件,用于渲染dataProvider的每个实例。

尝试这样的事情:

<mx:script><[[
 public var mydb : Array = [
   {label: 'Testin the buttong'},
   {label: 'Testin'}

  ]
]]></mx:script>

<mx:TileList width="1500" height="1000" dragMoveEnabled="true" 
                selectable="true" selectionColor="#FFFFFF"
                dragEnabled="true" dropEnabled="true" 
                 columnCount="1" rowHeight="160" dataProvider="{mydp}">
        <mx:itemRenderer>
         <mx:Component>
                <mx:Canvas width="1450" height="100">
                    <mx:Button label="{data.label}"/>
                </mx:Canvas>
         </mx:Component>
        </mx:itemRenderer>
    </mx:TileList>

简而言之,我在脚本中使用通用对象定义了dataProvider。我在线定义了一个itemRenderer。这样的事情至少应该有一些东西出现。

我不确定Canvas是否可以拖动,因为它通常没有任何东西可以点击以开始拖动。您可能想要考虑TitleWindow。

我在浏览器中编写了代码,因此适用标准免责声明。