1

これは私の他の投稿と似ているように聞こえるかもしれませんが、同じではないことを信じてください. そこで、配列リストをスクロールする方法について人々のアドバイスを受けることにしました。Block クラスを取る配列リストがあります。ブロッククラスは次のとおりです。

public class Block {

BufferedImage img;
double x;
double y;
double dx=0,dy=0;
public Block(BufferedImage img , double x, double y){
    this.img = img;
    this.x = x;
    this.y = y;
}
public void Render(Graphics g){
    g.drawImage(img,(int)x,(int)y,null);
}
public void Update(){
    x+=dx*DATA.speed;
    y+=dy*DATA.speed;
}
}

メイン クラスのメイン update メソッドで update メソッドを呼び出します。お気に入り:

    private void Update()
{
    for (int i = 0; i < World.BLOCK_LIST.size(); i++){
        World.BLOCK_LIST.get(i).Update();
    }
}

次に、すべてのブロックを左右に移動するには、次を使用します。

    public static void MoveLeft()
{
    for(int i = 0; i < World.BLOCK_LIST.size(); i++){
        World.BLOCK_LIST.get(i).dx = 2.5;
    }
}
public static void MoveRight()
{
    for(int i = 0; i < World.BLOCK_LIST.size(); i++){
        World.BLOCK_LIST.get(i).dx = -2.5;
    }
}

キャプチャの速度が遅いため、スクリーンショットを取得できませんでした。それか何かを引き起こしているのはラグだったようです。これを行うためのよりスムーズな方法は何ですか?

ところで私の画像は32x32です

私のレンダリングコード: ユーザーからのリクエスト:

public Main(){

     setSize(800,600);
     .................
     setVisible(true);
     createBufferStrategy(2);
}

ゲーム ループ (スレッド内であることを心配しないでください)

while(true){

    render();

}

レンダリング方法:

public void render(){

    BufferStrategy bs = getBufferStrategy;
    Graphics g = bs.getDrawGraphics();

    g.clearRect(0,0,screen_width,screen_height);
    //DrawOrWhatever(g);

    g.dispose();


    bs.show();
    Toolkit.getDefaultToolkit.sync();

}
4

0 に答える 0