图像闪烁,无法创建缓冲策略

时间:2019-02-09 18:21:26

标签: java jframe bufferstrategy

我是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.

理想情况下,我想使缓冲策略起作用,但是我会为消除图像上的闪烁而感到满意。

0 个答案:

没有答案