2013-10-23 121 views
1

我一直工作在一個小遊戲在Slick2D 這裏的JavaDoc:http://slick.ninjacave.com/javadoc/overview-summary.htmlSlick2D ClassCastException異常

的代碼塊這是給我的問題:

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); 

回答

1

this.shape.transform()方法返回多邊形造成的問題,但是您正在轉換Ellipse。

EllipsePolygonShape延伸。所以申報Shape shape而不是Ellipse shape

現在您可以直接指定而不需要投射。

this.shape = this.shape.transform(Transform.createTranslateTransform((float)(speed*Math.sin(angle)),(float)(speed*Math.cos(angle)*-1))); 

如果需要,那麼你可以輸入它。

+0

那麼,這比預期容易,謝謝 – EyeOfTheHawks

+0

@EyeOfTheHawks高興地聽到它。不用謝。 – Prabhakaran