0

配列操作を表すアニメーションを作成しています。これまでのところ、削除された描画された長方形 (インデックス) として表されるオブジェクトでアニメーションを作成しました。右側の残りのインデックスは、正しいインデックスを占有するために左にシフトされます。シフトする四角形のインデックスごとに、その特定のオブジェクトのアニメーションを作成します。

最初のインデックスが終了したらすぐに、次のインデックスのアニメーションを開始できるようにしたいと考えています。while ループを実行してアニメーションがまだ実行されているかどうかを確認しようとしましたが、実際には現在のアニメーションがビジーな待機ループのために表示されません。API の Animator クラスを見た後、関連するメソッドを見つけました。

void await() スレッドが中断されない限り、アニメーションが完了するまで、または stop() または cancel() の呼び出しによって現在のスレッドを待機させます。

この場合、現在のスレッドは何ですか? Timing-Framework が独自のタイミング スレッドを実行していることは知っていますが、これは何を指しているのでしょうか?

このアニメーターメソッドを使用して、最初に次のインデックスアニメーションの待機を構築する別のコードブロックをどのように記述すればよいですか?

ありがとう。

4

2 に答える 2

2

これは Swing GUI であるため、このようにアニメーションに Swing タイマーを使用すると、すべてのアニメーションが Swing イベント スレッドで実行され、この重要なスレッドを拘束したり凍結したりすることなく、より良いサービスが提供されると思います。おそらく、アニメーション コードに ChangeListener または PropertyChangeListener のサポートを追加することで、リスナーに何らかの通知を添付して、アニメーションがいつ完了するかを確認できます。

于 2012-11-17T18:23:01.637 に答える
0

Timing Frameworkを使用している場合、バージョン 1 にはインスタンスTimingTargetにアタッチできるインターフェイスがありAnimatorます。

これにより、 の状態に関するイベント通知が提供されますAnimator

「tick」コールバックの提供とは別に、 および も提供beginendます。

s のチェーンをまとめて、が呼び出されたAnimatorときに次の s を開始することができます。end

残念ながら、新しいバージョンを使用するようにライブラリを更新する時間がなかったため、実際のインターフェイスとメソッドが変更されている可能性があります。

于 2012-11-18T01:46:02.807 に答える