【问题标题】:Flex 4.6 Mobile - how to know which itemrenderer is visibleFlex 4.6 Mobile - 如何知道哪个 itemrenderer 可见
【发布时间】:2012-03-19 23:11:07
【问题描述】:

我有一个具有以下属性的火花列表:

    verticalScrollPolicy="off" 
    horizontalScrollPolicy="on"
    pageScrollingEnabled="true"
    scrollSnappingMode="leadingEdge"

里面是一个ItemRenderer,它为每个项目占据一个全屏。所以基本上它是一个水平列表,可让您一次左右滑动一页。请注意,scrollSnappingMode 已打开,因此页面总是完美地贴合在页面上。

另外,我在布局上设置了“useVirtualLayout=true”,所以我有正在回收的虚拟 ItemRenderer。

我的问题是:我如何知道屏幕上当前是哪个 ItemRenderer?是否有要观看的事件或属性让我知道此页面何时进入视图并且是当前可见的页面?

【问题讨论】:

    标签: apache-flex mobile flex4.5 flexbuilder


    【解决方案1】:

    我如何知道屏幕上当前是哪个 ItemRenderer?

    在您描述的情况下,它使用虚拟布局并且一次只在屏幕上显示一个元素;只会有一个 itemRenderer。

    您可以使用 itemRenderer 上的 data 属性访问 itemRenderer 的 dataProvider 元素。

    您可以使用 itemRenderer 上的 itemIndex 属性在 dataProvider 中找到数据的索引。

    如果您想知道列表何时从包含列表的组件发生变化;你可以试试听 change 事件;但我不确定这是否会满足您的需求;因为可以在不选择新项目的情况下滚动。

    【讨论】:

    • 这并不完全正确,一次肯定有不止一个 ItemRenderer。如果我只是向任一方向滑动一点而不更改页面,我可以并排看到两个项目。所以一次至少有两个渲染器,但我认为更可能是三个,因为它会在当前渲染器的左侧和右侧创建一个。所以问题仍然存在:哪一个是可见的?
    • 在 MX 列表中,他们有一个属性 offscreenExtraRowsorColumns 严格用于此目的。 help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/… Spark 列表似乎有类似的东西。可能在布局或数据组上?对我来说没有什么是显而易见的。为什么哪个渲染器可见很重要?
    • 这对我很重要,因为出于多种原因,我想跟踪用户当前在哪个页面上。有没有办法查看 ItemRenderer 的绝对 X 和 Y 定位?这样,当两者都为零时,我知道它当前正在屏幕上显示....
    • 页面类比在应用程序中效果不佳;因此,当您谈论“页面”时,我对您所追求的感到非常困惑。在此处阅读有关 Flex 坐标系的信息:help.adobe.com/en_US/flex/using/… 假设“绝对”指的是全局坐标;您可能想使用 localToGlobal() 将 itemRenderer 的 X 和 Y 位置转换为相对于顶级应用程序的 X 和 Y 位置。
    猜你喜欢
    • 2012-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多