2016-01-21 64 views
0

我有一個很簡單的問題,只是對我沒有意義。LibGdx Polygon.getTransformedVerticies()不返回數組

我在輔助類有一個方法drawStar():

public void drawStar(Star star) { 

    shapeRenderer.begin(ShapeType.Line); 
    shapeRenderer.setColor(Color.RED); 
    poly[star.id].setVertices(star.verticesStar); 
    if(star.rotation > 0){ 
     poly[star.id].rotate(star.rotation); 
     poly[star.id].setOrigin(star.originX, star.originY); 
     shapeRenderer.polygon(poly[star.id].getTransformedVertices()); 
    }else if(star.rotation == 0){ 
     shapeRenderer.polygon(star.verticiesStar); 
    } 
    shapeRenderer.end(); 
    System.out.println(poly[1].getTransformedVertices()[5]); //WORKS FINE 
} 

上面簡單地取的尺寸和星形對象我通過它的頂點和用多邊形的陣列精確地繪製它。在這個階段沒有問題。

問題是,當我嘗試訪問POLYGON陣列中的另一個類中,我這樣做,例如:

Polygon[] poly = new Polygon[50]; 
poly = Helper.poly; 
System.out.println(poly[1].getTransformedVertices()[5]); //SAYS ARRAY INDEXOUTOFBOUNDS 

我可以打印出聚[1] .getTransformedVertices()的長度,這將準確。返回20,這是我星的頂點數組的大小,這與Helper類和其他類中的答案是相同的,但是當我嘗試在另一個類中單獨打印這些頂點中的任何一個時,它會說數組indexoutofbounds。

額外的調試 在其他類,這個工程:

for(int i = 0; i < Helper.poly[1].getTransformedVertices().length; i++){ 
     System.out.println(Helper.poly[1].getTransformedVertices()[1]); //0-19 works fine as an index 
    } 

但這種失敗:

System.out.println(Helper.poly[1].getTransformedVertices()[1]); //0-19 always returns indexoutofbounds 

爲什麼一個for循環準確地返回經過變換的頂點,但完全一樣的for循環之外的變量失敗並且數組索引超出範圍?如果Helper.poly [1] .getTransformedVertices()。length返回20,表示數組大小爲20,爲什麼Helper.poly [1] .getTransformedVertices()[1]失敗?只能在for循環中運行?

任何幫助,非常感謝。

回答

0

我想通了,最初在update方法中的polygon.getTransformedVerticies()將數組大小爲0,然後填充本身,所以for循環只會在數組被填充時工作,但蠻力強制索引不會工作。我加了這條線,它工作正常。

if(poly.getTransformedVertices().length != 0){ 
     System.out.println(poly.getTransformedVertices()[0]); 
    }