我是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.
理想情况下,我想使缓冲策略起作用,但是我会为消除图像上的闪烁而感到满意。