2016-06-10 66 views
-8
Array<Body> bodies = new Array<Body>(world.getBodyCount()); 
       world.getBodies(); 

       for (Body body : bodies) { 

        update(body); 

       } 
+1

這是哪一個? Java,C++還是C? –

+0

@AndyTurner肯定不是C:p – Boiethios

+2

...和'Array bodies = new ...'也不是C++,所以可能是Java。 @kalpesh請注意,這個網站是提供問題和答案,而不是語言猜測測驗;) – user463035818

回答

2

好吧,首先你要分配一個Array並確保backing數組將適合world.getBodyCount()。因此,如果您的世界中現有的身體數量是十個,那麼ArrayList將有足夠的內存來分配最初存儲十個身體,但所有這些輸入將爲null

然後您撥打world.getBodies();但是不能訪問局部變量bodies,這絕對不是static;因此您的Array仍處於未初始化狀態!

當您來到for循環時,Array爲空,所以它執行零次;沒有更新。所以;真正的訣竅是你沒有正確訪問世界範圍內的bodies

是否getBodies()返回List您應該使用?