我正在创建一个扩展Graphics2D的类。在这个类中,我基于现有方法创建了一些自己的方法,例如绘制以点为中心的圆的方法。我希望这样做,所以我不必为渲染形状调用几个不同的类 - 相反,我只会调用一个统一的类。
我目前的问题是创建这个对象,我称之为GraphicsEngine。在扩展Canvas的游戏线程中,我创建了一个图形对象,然后我尝试将其转换为GraphicsEngine对象(为了清晰起见,在下面略微扩展):
GraphicsEngine graphicsEngine;
private void render(){
BufferStrategy bufferStrategy = getBufferStrategy();
if(bufferStrategy == null)
{
createBufferStrategy(3);
return;
}
Graphics g = bufferStrategy.getDrawGraphics();
Graphics2D g2d = (Graphics2D) g;
graphicsEngine = (GraphicsEngine)g2d;
}
当我尝试初始化GraphicsEngine对象时,我得到一个ClassCastException。 (
Link to my GraphicsEngine class to prevent clutter
我想知道为什么我得到这个例外,因为我没有引入任何新的变量 - 只有方法,我认为这些方法在投射中不重要。由于Graphics可以转换为Graphics2D,我原以为它也可以转换为Graphics2D的子类。我很感激任何帮助,理解为什么不是这种情况或我在这个过程中犯了什么错误。此外,我将非常感谢帮助GraphicsEngine对象的初始化工作。 干杯!