Изображения мерцают, невозможно создать буферную стратегию - PullRequest
0 голосов
/ 09 февраля 2019

Я новичок в Java и пытаюсь создать простую игру для изучения веревок.

Всякий раз, когда я пытаюсь createBufferStrategy( 2/3 );, я получаю исключение о недопустимом состоянии.

Если я пытаюсь использовать стандартное исправление -Dsun.java2d.d3d=false, я не получаю ошибок, но ничего не отображается.

Я попытался использовать -Dsun.java2d.d3d=false в качестве параметра сборки, но когда я это сделал, у меня отображается только белое поле.

Я могу установить стратегию буфера на 1, и она будет работать нормально, однако изображения постоянномерцание.

public Boolean initialize( int p_Width, int p_Height, String p_Name, 
AbyssMazeJava p_AbyssMazeJava )
{ // Start setUp.       

    if( isLocked() )
        return false;

    p_AbyssMazeJava.setPreferredSize( new Dimension( p_Width, p_Height ) 
);
    p_AbyssMazeJava.setMaximumSize( new Dimension( p_Width, p_Height ) );
    p_AbyssMazeJava.setMinimumSize( new Dimension( p_Width, p_Height ) );

    JFrame _frame = new JFrame( p_Name );
    _frame.add( p_AbyssMazeJava );
    _frame.pack();
    _frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    _frame.setResizable( false );
    _frame.setLocationRelativeTo( null );
    _frame.setIgnoreRepaint(true);
    _frame.setVisible( true );

    p_AbyssMazeJava.initialize();
    p_AbyssMazeJava.start();


    //
    // Test Code:
    //

    return true;

} // End setUp.


private void draw()
{ // Start draw.

    //
    // Initializing our buffer and graphics:
    //
    bufferStrategy = getBufferStrategy();
    if( bufferStrategy == null )
    {
        this.createBufferStrategy( GameDefines.DefaultNumberOfBUffers );
        return;
    }
    graphics = bufferStrategy.getDrawGraphics();
    graphics.setColor( GameDefines.DefaultWindowColor );
    graphics.fillRect( 0, 0, getWidth(), getHeight() );

    //
    // Game Draw Code
    //
    //testPlayer.draw(graphics);
    graphics.drawImage( testImage, 0, 0, null );

    //
    // Disposing our Buffer and Graphics:
    // 
    bufferStrategy.dispose();
    graphics.dispose();

} // End draw.

В идеале я бы хотел, чтобы стратегия буфера работала, однако я остановлюсь на устранении мерцания на изображениях.

...