0

我有一个填充列表的移动应用程序。这需要几秒钟,所以我试图显示忙指示符。当视图被激活时我会显示忙碌指示器,然后当列表完成时我想关闭忙碌指示器。

我的繁忙指示器和列表声明的 MXML 如下所示:

<s:BusyIndicator id="BI"  visible="true" />

<s:List id="lst"  effectStart="lstStartHandler(event)"  effectEnd="lstFinishHandler(event)" fontSize="20" horizontalCenter="0" textAlign="right"  dataProvider="{dp}" useVirtualLayout="true" width="100%" height="100%" top="30" alternatingItemColors="[#66FFFF, #33CCCC]">

我的事件监听器是这样的:

private function lstFinishHandler(event:EffectEvent):void {
            BI.visible = false
        }

        private function lstStartHandler(event:EffectEvent):void {
            BI.visible = true
        }

我的忙碌指示灯总是亮着,永远不会看不见。似乎事件函数没有执行。

显然我做错了什么,但无法弄清楚。任何想法,将不胜感激。

干杯,

4

1 回答 1

0

MXML 中的effectStarteffectEnd属性用于在 Flex 效果类对您的组件播放效果时添加事件处理程序。

如果您没有在 上触发任何效果List,那么这些事件处理程序将不会被执行。

您需要通过其他方式告诉繁忙指示器消失:

  • 调度你自己的事件
  • 使用数据绑定
  • 使用视图状态和 currentState 属性
  • ETC...

您已经在使用数据绑定来设置dataProvider列表,您可以简单地添加另一个变量并绑定到的可见属性BusyIndicator

<s:BusyIndicator visible="{isServerResponseComplete}" />

添加一个可绑定变量(`isServerResponseComplete')只是为了做到这一点感觉不对,但这是最简单的答案。调度事件可能是一种更好的方法,但是如果不知道您的应用程序的结构,很难准确地说出您应该如何做。

于 2012-04-21T19:04:27.037 回答