【问题标题】:Starling Feathers tilerow clickableStarling Feathers tilerow 可点击
【发布时间】:2012-12-12 16:11:46
【问题描述】:

我正在制作基于 tileRow 布局的数据视图,我将有 3-5 列

col1     col2     col3     col4
---------------------------------------
row1-1   row1-2   row1-3   row1-4
row2-1   row2-2   row2-3   row2-4

目前我已将其设置为使用 for 循环来创建项目并将每个项目的宽度设置为容器总大小的 1/4,这非常有效,可以用 4 个四边形填充整行,所以真的布局是这样的:

col1    col2    col3    col4
---------------------------------------
tile1   tile2   tile3   tile4
tile5   tile6   tile7   tile8

我想添加一个事件侦听器以在单击一行时触发一个函数。我假设我无法真正做到这一点,因为每一行都由 4 个单独的图块组成。

有没有更好的方法来达到预期的效果,还是我应该只添加带有可点击按钮的第五列?

我不能真正使用该列表,因为我需要多个列。

【问题讨论】:

  • 我真的没有看到将点击处理程序添加到行中的元素的问题?您是否担心无法单击的列/图块之间的间隙?或者您是否关心为每行注册 4 个点击处理程序?
  • 我想我关心的是如何通过单击任一磁贴将 tile1、tile2、tile3 和 tile4(在此示例中)传递给处理程序。如果有 100 行,每行有一个按钮,会不会有任何性能问题?
  • 好吧,不一定来自处理程序本身,如果您不熟悉对象池或在 flex 世界项目渲染器回收中众所周知,您可能想要使用或实现一些类似的东西.您应该能够提前修改数据,以便从这些元素中的任何一个调度的单击将能够通过查看当前分配给“DisplayObject”的数据来确定行,无论它在 Starling 中是什么。无论是否进行此列划分,性能都将成为更新位置和如此多行的问题。
  • 您要做的基本上是弄清楚(理想情况下在运行时的代码中)有多少可以放在屏幕上,只创建那个加 1 或 2 以便在屏幕外准备好,因为用户滚动您向上滑动它们,当它们离开屏幕时,您将它们放回可重复使用的池中,当您需要一个新的作为列表底部的时,您只需从免费池中拉出一个并准备就绪渲染器。我认为 Starling 可以帮助解决这个问题,但不是专家。

标签: actionscript-3 starling-framework


【解决方案1】:

我会创建一个代表一行的新 Sprite。 从池中取出 rowSprite,并将每一行的项目添加到其中。然后你可以在行上放置一个点击处理程序,并抓取事件的 currentTarget 的子项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多