2010-11-19 34 views
0

私は、zipファイルからsqlite dbにデータをインポートするFlex AIRアプリケーションを作成しています。進行が完了するまでユーザーが待機するように、進行状況バー/ "Please Wait"スピナーアニメーションを表示する必要があります。データのインポート中に「しばらくお待ちください」スピナーを作成する方法

ポップアップスピナーアニメーションを作成しようとしましたが、問題は、データベースインポートクエリの実行が開始されるとすぐにスピンナーが回転を停止することです。

スピナーコードとインポートコードの両方を、順次ではなく同時に実行する必要があります。

おかげ

答えて

1

ここで直面している問題は、Flexがシングルスレッドアプリケーションであるためです。大量の処理を実行すると、スレッドはUIを更新しないため、スピナーの回転が停止します。

これを回避するには、処理コードを分割することができる場合はGreen Threadを作成してください。グリーンスレッドのas3実装については、hereをチェックすることができます。

必要に応じて実装するための情報を追加できます。

+0

この質問の受け入れられた答えを確認してください:http://stackoverflow.com/questions/2731160/flex-as3-progressbar-doesnt-move – midhunhk

+0

非常に興味深い。これは確かに私にとっては新しいことです。あなたの助けは大いに感謝しています。 – Vinayak

+0

あなたは大歓迎です:) – midhunhk

1

あなたの問題は、フラッシュはシングルスレッドであることに起因することができます。 cpu-intesive操作を削除するには、timerでのインポートを置き換えてみてください。 これは問題ではないことが分かりますが、コードのほんの一部がデバッグをスピードアップする可能性があります:)

0

だから、ほんのスピナーが必要な場合は、これ以上のデータは必要ありません。ただし、プログレスバーが必要な場合は、そこにあるデータの量を知る必要があります(ジップのサイズは十分正確です)。次に、あるものを持っているEvent.ENTER_FRAMEあなたがデータの一部を取って、テーブルに挿入するリスナー...そしてそこで止めてください。次に、物のアニメーションが表示されます。どのくらいの量のデータが最適かを見てみましょう... FPSメーターを追加するのが最も一般的ですが、それがあまりにも少なくなった場合は、その量を減らしてください。

プログレスバーが必要な場合は、すでに解析されたバイト数で変数をインクリメントし、それを合計バイトで割ります。これはプログレスバーの比率です。スピナーと同じくらい安心してください。

関連する問題