Java でオブジェクトの時間差移動を実現する方法: フルーツ忍者効果のためにタイマーと遅延を利用する?

Susan Sarandon
リリース: 2024-11-01 05:44:02
オリジナル
836 人が閲覧しました

How to Achieve Staggered Object Movement in Java: Utilizing Timers and Delays for a Fruit Ninja Effect?

オブジェクトとタイマーの移動

このコンテキストでは、オブジェクトが画面の下部からランダムに表示され、特定の高さまで上昇するようにします。 、その後、ゲームのフルーツ忍者と同様の方法で下に戻ります。ただし、遅延がずらされていないため、すべてのオブジェクトが同時に開始されるという問題が発生します。

解決策:

この問題を解決するには、次のことができます。各オブジェクトに固有の遅延が発生します。以下は、減少する遅延カウンターに基づいて動きを実行する ActionListener を備えた Shape クラスを使用する可能なアプローチの説明です。

1.遅延と移動ロジックを備えたシェイプ クラス:

<code class="java">class Shape {

    private int randomDelayedStart;
    private boolean draw = false;
    private boolean down = false;
    private int y = D_HEIGHT; // Initial position at the bottom of the screen

    public void decreaseDelay() {
        if (randomDelayedStart <= 0) {
            draw = true;
        } else {
            randomDelayedStart -= 1;
        }
    }

    public void move() {
        if (draw) {
            if (y <= 50) {
                down = true;
            }

            if (down) {
                y += INCREMENT;
            } else {
                y -= INCREMENT;
            }
        }
    }
}</code>
ログイン後にコピー

2.各シェイプのランダムな初期化:

Shape オブジェクトを作成するときに、遅延値をランダムに割り当てることができます:

<code class="java">for (int i = 0; i < 20; i++) {
    int randXLoc = random.nextInt(D_WIDTH);
    int randomDelayedStart = random.nextInt(100);
    Shape shape = new Shape(randXLoc, randomDelayedStart);
    list.add(shape);
}</code>
ログイン後にコピー

3。シェイプの動きをトリガーする ActionListener:

単一の Timer で、ActionListener はすべてのシェイプを反復処理し、遅延カウンターをデクリメントし、その移動メソッドを呼び出すことができます。 :

<code class="java">ActionListener taskPerformer = new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        for (Shape s : shapes) {
            s.decreaseDelay();
            s.move();
            repaint();
        }
    }
};</code>
ログイン後にコピー

4.タイマーの開始:

すべてのシェイプを初期化した後、タイマーを開始して連続的な動きを開始します:

<code class="java">timer.start();</code>
ログイン後にコピー

このアプローチにより、シェイプごとに独立した遅延と動きが可能になり、彼らは千鳥状に現れて動き、Fruit Ninja の望ましい動作に似ています。

以上がJava でオブジェクトの時間差移動を実現する方法: フルーツ忍者効果のためにタイマーと遅延を利用する?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート