私はスクリーン上で正方形を翻訳するなど、Javaでアニメーションをどのくらい正確に作成しているのかよく分かりません。 forループを使用して矩形の位置を変更しようとすると、すべてが即座に実行され、矩形の終点座標になります。だから私が知りたいのは、人々がこれらのスムーズなアニメーションをどのようにして達成するのか、何らかの理由でカスタムアニメーションクラスを作成したいのであれば、Javaのインスタントポジションの変更ではなく、アニメーションはJavaでどのように正確に機能しますか?
答えて
矩形のxとyの位置を保存するだけです。その後、一定の時間が経過したかどうかを確認するwhileループを実行します。存在する場合は、位置変数をインクリメントします。
コード(ニーズに合わせて微調整が必要になります):一言で言えば
int tick = 500; //set this to whatever you want
long lastTime = System.currentTimeInMillis();
while(true) {
long currTime = System.currentTimeInMillis();
if (currTime > lastTime + tick) {
lastTime = currTime;
x = x + 1; //replace this with your object's position
}
}
簡単な質問ですこのことは、別のスレッドで正しく実行されますか?もし私が10種類のアニメーションをやりたいのであれば、それを動作させるには10本の糸が必要ですが、私のコンピュータには8本しかない時はどうすればいいですか?私はただテストしたい。 – AnotherRandomUser
最初に、8つのコアを持つマシンに10個のスレッドを作成できます。コンピュータはそれを抽象化し、同じコア上のスレッドを並行して実行します。次に、別のスレッドでこれを実行する必要はありませんが、それは良い考えです。 – nhouser9
フレームワークによっては、 "ティッカー"と "レンダラー"間の競合状態を危険にさらす可能性があります(または、「イベント」スレッドで実行している場合、UIとのさらなる対話を防ぎます)。 – MadProgrammer
Thread.sleep(long millis)メソッドを使用して遅延を追加すると、指定したミリ秒単位で現在のスレッドの実行を停止できます。しかし、おそらくより良い方法があります。
お返事ありがとうございますが、私はthread.sleepが最善の選択だとは思わないので、あなたはメニューを作成していると言いますか?アニメーションのためにスレッドをスリープ状態にするように指示したが、スリープ状態になるとユーザーのクリックにどのように反応するのでしょうか? – AnotherRandomUser
私はそれが眠っている間にユーザーのクリックを登録することができるとは思わない。 – Pyrrhic
私はそう思います。私はこれがどのように行われるのかについてGoogle検索を試みてきましたが、今まで何も見つけていないので、ここに来て質問する前に1時間以上探しています。 – AnotherRandomUser
- 1. インポートはどのように正確に機能しますか?
- 2. IEEE 754:どのように正確に機能しますか?
- 3. Robolectricで正確にカスタムのシャドウオブジェクトはどのように機能しますか?
- 4. 60Hzのアニメーションはどのように機能しますか?
- 5. アセンブリのバージョンマッチングはどのように正確に機能しますか?
- 6. これらのコードはどのように正確に機能しますか?
- 7. 類義語はどのように正確に機能しますか?
- 8. ピーク検出アルゴリズムは正確にどのように機能しますか?
- 9. Javaでfinalize()はどのように機能しますか?
- 10. Javaで@Overrideアノテーションはどのように機能しますか?
- 11. 数式はJavaでどのように機能しますか?
- 12. Javaインポートのワイルドカードはどのように機能しますか?
- 13. JavaのStdIn/Outはどのように機能しますか?
- 14. JavaのHashSetはどのように機能しますか?
- 15. どのようにjavaのimport文は機能しますか?
- 16. function(){}()はどのくらい正確に機能しますか?
- 17. スパーク中:どのようなパーティションが正確に機能しますか?
- 18. Dozer Java APIはどのように機能しますか?
- 19. Javaグローバル変数はどのように機能しますか?
- 20. オンラインJavaコンパイラはどのように機能しますか?
- 21. Java repaint()はどのように機能しますか?
- 22. WebGLを使用したSpriteアニメーションはどのように機能しますか?
- 23. 「アルファ」アニメーションの「Angular 2.0」はどのように機能しますか?
- 24. スタックオーバフローを防ぐために、ディレイは連続モナドでどのように正確に機能しますか?
- 25. logstash kv {}機能はどのように機能しますか?
- 26. WatchKit:ディクテーション機能はどのように機能しますか?
- 27. 機能はどのように機能しますか?
- 28. 組立の「inc」はここでどのように正確に機能しますか?
- 29. Javaヒープスペース - -Xmxはどのように正確に動作しますか?
- 30. このJavaコードではリエントラント・ロックはどのように機能しますか?
:ランニング 'rectangle.x =(System.currentTimeInMillis() - startTimeInMillis)のようなもの* 0.5 + 10;'ごと数ミリ秒。あるいは単に数ミリ秒ごとに 'rectangle.x + = 2;'を実行するだけです。 – immibis
ねえ、ありがとう。スレッドをスリープさせたり、他のイベントの実行を侵害したりせずに、毎ミリ秒ごとにrectangle.xを実行する方法はありますか? – AnotherRandomUser
あなたは同時性を理解する必要があります。本質的には、バックグラウンドで目立つスレッド/タイマーがあります。オブザーバーは、要件に基づいて状態を更新し、画面にレンダリングされるオブザーバに通知を送ります(独立したスレッド、しばしばイベントディスパッチスレッド)。あなたが最終的にこれを達成する方法は、使用しているフレームワークに依存します – MadProgrammer