0

リストに入力するモバイルアプリがあります。これには数秒かかるので、busyindicatorを表示しようとしています。ビューがアクティブになったらビジーインジケーターを表示し、リストが完成したらビジーインジケーターをオフにします。

ビジーインジケーターとリスト宣言の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プロパティを使用する
  • 等...

すでにデータバインディングを使用しdataProviderてリストのを設定しています。別の変数を追加して、BusyIndicator:の表示プロパティにバインドするだけです。

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

これを行うためだけにバインド可能な変数( `isServerResponseComplete')を追加するのは間違っていると感じますが、これが最も簡単な答えです。イベントのディスパッチはおそらくより良いアプローチですが、アプリがどのように構成されているかを知らずに、イベントをどのように行うべきかを正確に言うことは困難です。

于 2012-04-21T19:04:27.037 に答える