2014-03-25 40 views
1

我正在使用libgdx在java中使用libgdx進行遊戲,我正在部署到我擁有的Web服務器以及Google Play市場。Java Libgdx正確地忽略gwt構建的類引用

使用libgdx處理部署它是建立像所有libgdx項目:

遊戲 - 遊戲主代碼

遊戲的Android - 爲Android打造

遊戲的HTML - 對於GWT建立

遊戲允許用戶保存和加載項目,以及拍攝屏幕截圖。由於html5無法訪問任何實際的文件系統,因此在構建遊戲html版本時,我無法以相同的方式使用這些功能。

我創建了一個名爲FileManager的類,它在主遊戲代碼類中實例化。它處理所有文件系統相關的東西。

當我去建造game-html時,我必須通過引用FileManager類的4個或5個其他類並將這些行註釋掉。我這樣做是爲了防止gwt構建投擲錯誤。

當您的某個遊戲代碼類使用Gdx.files.local時,處理GWT構建的正確方法是什麼?

感謝您的幫助!

+0

難道你不能只是將一個參數傳遞給你的遊戲代碼,以確定它是否是一個GWT運行?然後,如果參數指示它是GWT,就避免使用FileManager。這與您可能更改使用的輸入類似,具體取決於您使用的是桌面設備還是Android設備。 –

+0

我嘗試過類似的東西,但在構建過程中它似乎被忽略。我這樣做: 當我加載遊戲的代碼,我傳遞一個字符串與設備名稱。 所以,如果它的Android字符串爲「機器人」,也可以是「桌面」或「GWT」 那我試試這個遊戲中的代碼的create()方法: 如果(device.equals(「GWT! 「)){ \t this.files = new FileManager(this); } – user2989675

+0

如果你已經嘗試了一些東西,你可以發佈一些示例代碼以及你得到的確切錯誤嗎? –

回答

1

如果可以並使用if(Gdx.app.getType() == ApplicationType.WebGL) {}isLocalStorageAvailable(),將其設爲運行時問題。

似乎本地存儲支持計劃 - 「首選項和本地文件,最有可能通過Web存儲API實現。」 http://www.badlogicgames.com/wordpress/?p=2308但我想它還沒有實現。

你總是可以寫一些使用GWT to access HTML5 local storageplatform specific code,甚至可以自己更新backend

+0

的具體問題與此功能: \t'公共陣列的GetList(字符串DIR){ \t \t陣列文件=新的Array (); \t \t FileHandle dirHandle; \t \t如果(Gdx.files.isLocalStorageAvailable()){ \t \t \t DIRHANDLE = Gdx.files.local(基+ 「/」 +方向); \t \t \t的(文件句柄條目:dirHandle.list()){ \t \t \t \t如果{ \t \t \t \t \t字符串文件名=條目((Gdx.app.getType()== ApplicationType.WebGL)!) 。.file()的getName(); \t \t \t \t \t files.add(fileName); \t \t \t \t} \t \t \t} \t \t} \t \t迴文件; \t}' 即使這兩項檢查構建仍然中斷。但是,如果我用'entry.file()。getName()'註釋掉該行,那麼它會生成。 – user2989675

+0

實際的錯誤是什麼?不是隻是說錯誤的那一行,那裏(希望)應該是列出的原因。 再次閱讀平臺特定的代碼網頁。如果你爲FileManager創建一個接口,然後只將當前的FileManager放到你的桌面/ android項目中,你應該沒問題。你只需要製作一個沒有Web項目問題代碼的FileManager。 – Chase