2012-05-10 6 views
1

私はTrident Animation Libraryにはかなり新しくなっていますが、これをアニメーションに使用すると本当にうまく動作します。Java - Tridentアニメーションライブラリ - コンテナのサイズ変更時の補間を反映

私の条件は基本的に容器の角の1つから容器の中央までJComponentをアニメーション化することです。

以下は私の擬似コード私のコンテナは、コンテナの変化の中心をリサイズ今

this.setLayout(null);  
JButton button = new JButton(); 
button.setLocation(new Point (0,0)); 
Point center = new Point(getWidth()/2, getHeight()/2); 
Timeline timeline = new Timeline(notification.getComponent()); 
timeline.addPropertyToInterpolate("location", button .getLocation(), center); 
timeline.setDuration(1000); 
timeline.play(); 

です。 e.xの場合:コンテナの中心が(100,100)で、コンテナのサイズが変更された後、新しい中心が(200,200)です。

(100,100)ではなく(200,200)にコンポーネントが移動するように、補間中に新しい中心を反映できる方法はありますか?助けてください。スタートストア現在のウィンドウ/パネルサイズで

答えて

0

これは私の心の中にポップ最初のものです。現在のウィンドウ/パネルのサイズが最初に使用したものと異なるかどうか(つまり、パネルのサイズが変更されているかどうか)をチェックします。サイズが変更されている場合は、現在のタイムラインを停止し、新しいパネルセンターに基づいて新しいパスで新しいタイムラインを作成します。

+0

ありがとうございました。私はあなたから与えられた解決策に一度疑問を持っています。タイムラインの継続時間は、あらかじめ定義された値です。 timeline.setDuration(1000)の1000msはあらかじめ定義されています。今度はコンテナのサイズが変更されるたびに実行中のタイムラインを停止して新しいタイムラインを作成すると、経過時間を追跡するので、サイズ変更が発生するたびに新しいタイムラインの期間に "totaltime-elapsedtime"を渡すことができます。また、conztinerのサイズ変更の頻度が高すぎる場合は、新しいタイムラインを停止して作成することをお勧めします。アプリケーションのパフォーマンスがあまりにも大幅に低下しますか? – user1096084

+0

"totaltime-elapsedtime"は良い考えのようです。私はあなたが[Compoment Listener](http://docs.oracle.com/javase/tutorial/uiswing/events/componentlistener.html)を書いて、ユーザーがウィンドウ/パネルのサイズを変更したときにタイムラインを再作成することを提案します。サイズ変更の間に小さなステップをすべて無視する)。パフォーマンスに関しては、見つけ出す方法が1つしかありません:試してみましょう:-) –

関連する問題