我一直在用Slick2D制作一个小游戏
这是JavaDoc:http://slick.ninjacave.com/javadoc/overview-summary.html
这段代码给了我一些问题:
public void move(){
this.shape = (Ellipse)this.shape.transform(Transform.createTranslateTransform((float)(speed*Math.sin(angle)),(float)(speed*Math.cos(angle)*-1)));
this.posx = this.posx+(float)(speed*Math.sin(angle));
this.posy = this.posy+(float)(speed*Math.cos(angle)*-1);
updateShape();
}
这是错误:
java.lang.ClassCastException: org.newdawn.slick.geom.Polygon cannot be cast to org.newdawn.slick.geom.Ellipse
使我失望的是.. shape.transform()返回抽象的Shape类,该类打算转换为特定形状。我在不同的类中对Polygon做过同样的事情,并且效果很好。
如果有人对此有经验,那就太感谢了,谷歌对我没有多大帮助
编辑*
哦,很抱歉,我忘了介绍this.shape的创建方式:
Ellipse shape;
...
shape = new Ellipse(diameter/2,diameter/2,posx,posy);
最佳答案
此问题是由this.shape.transform( )
方法返回Polygon引起的,但是您正在转换Ellipse。Ellipse
和Polygon
从Shape
扩展。因此,像Shape shape
而不是Ellipse shape
声明。
现在,您可以直接分配而无需强制转换。
this.shape = this.shape.transform(Transform.createTranslateTransform((float)(speed*Math.sin(angle)),(float)(speed*Math.cos(angle)*-1)));
如果需要,可以键入强制转换。
关于java - Slick2D ClassCastException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19546954/