在flex 4中为2D俯视图MAP创建自定义组件或扩展List组件?

时间:2010-11-11 16:02:26

标签: flex map

HY!

我正在构建顶视图2D地图,它的对象存储在服务器上。

种类的对象为10,可能是照片,标签,按钮,列表,混合或带有工具提示的标签。

组件必须请求屏幕上缺少的“区域”。 面积为1000x1000像素,并以flex格式缓存。

在地图中移动,就像在谷歌地图中一样(拖放)

我应该能够拥有另一个列表,并使用拖放对象将对象从一个移动到另一个。例如:我从列表中抓取一个对象并将其移动到此地图上,然后释放鼠标按钮并将项目放在那里。

现在问题是:我为此尝试构建一个自定义组件,尝试模拟项呈示器以获得性能和回收,实现对对象的拖放和请求缺少哪些区域?

从火花扩展List组件,我添加了一些功能作为多种itemrenderers并使用它们的回收。当然,它必须能够请求屏幕上缺少的区域并缓存它的数据。 也许还需要创建自定义布局

我需要的是必须非常流畅的东西,所以这个组件越轻越好!

感谢您的帮助! (:

更新 *没有任何对象超过另一个。 *我不会在位图上使用hitTest,因为所有位图都包含在另一个组件中,因为它们现在都是itemrenderers。

无论如何,我已经开始使用扩展SkinnableDataContainer和自定义布局的类来完成此操作。由于布局不像网格,因此在不同点(x,y)处是稀疏的随机项。

现在我遇到了这个问题:https://stackoverflow.com/questions/4192934/how-to-get-the-localx-and-localy-relative-to-item-renderer-and-not-to-the-spark

1 个答案:

答案 0 :(得分:0)

也许您可以使用以下某些功能的组合:

  1. 如果使用hitTest,画布背景(对于分层组件)看起来很流畅。使用constraintColumn / constraintRow将画布拆分为网格布局。
  2. 使用hitTest(在项目bitmapdata上)进行碰撞检测,并将项目移动到新位置(如果项目彼此重叠)。
  3. 使用mouseDown,mouseMove,mouseUP(示例here)的组合进行拖放。
  4. 使用2D / 3D索引数组来跟踪项目的位置(例如here