ゲームライブラリLibGDXを使用して2Dゲームを作成します。ゲームが始まると、いくつかの変数はPreferences
ファイルの値で埋められます(https://github.com/libgdx/libgdx/wiki/Preferences参照)。Android/LibGDX - 整数をfloatにキャストすることはできませんが、デスクトップでうまく動作します。
私のGamePreferences
クラスでは、私はhelpingRects
と呼ばれる配列(Vector3)を持っています。 x値は、に見出すことができる
for(int i = 0; i < numOfHelpingRects; i++)
{
helpingRects.add(new Vector3(prefs.getFloat("helpingrect" + String.valueOf(i) + "x"), prefs.getFloat("helpingrect" + String.valueOf(i) + "y"), prefs.getFloat("helpingrect" + String.valueOf(i) + "l")));
}
したがって、例えば、i = 0
ため、新しいhelpingRects
ベクトルが追加される:forループでは、アレイは、環境設定ファイルの値で埋めなければなりません設定ファイル "helpsrect0x"など
私はLibGDXを使用しているので、複数のプラットフォームでゲームを実行できます。 dekstopでは、コードが正常に動作しますが、Android上で、私はエラーメッセージが表示されます:
E/AndroidRuntime: FATAL EXCEPTION: GLThread 23941
Process: de.ej.facharbeitsspiel, PID: 13218
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Float
at android.app.SharedPreferencesImpl.getFloat(SharedPreferencesImpl.java:256)
at com.badlogic.gdx.backends.android.AndroidPreferences.getFloat(AndroidPreferences.java:101)
at de.ej.facharbeitsspiel.Tools.GamePreferences.load(GamePreferences.java:65)
at de.ej.facharbeitsspiel.MainClass.create(MainClass.java:26)
at com.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:275)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1633)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1354)
だから、基本的には、明らかにint
ある変数i
は、float値にキャストすることはできません。 .prefsの私のエントリは、「helpingrect0.0x」と呼ばれていないので、
は、誰かが解決策を知ってい
など、なぜならこの場合に役立つi
が
0.0/1.0
などに等しいが、これは悪くないん
float
に
int
から
i
を変更しますこの問題のために?あなたは、私はそれは難しい
i
が
int
であるため、エラーがあると信じて見つけるあなたのコードを見て、
String.format("%.0f", i)
セカンドを使用する場合はfloat i = 0
を使用することができ、
なぜそれらを「整数」として取得したくないのですか? stacktraceは、値が 'Integer'の型であることを示唆します。なぜ' getFloat'を使用しますか?とにかく '(float)Integerumber'でキャストすることができます –
Vector3は' float'値を必要とするクラスです。そして、私は上記の理由のために '私は'フロートにキャストすることはできません。 – erik4thewinners
@ erik4thewinnersどのようにあなたは好みの価値を置いて、そのコードを表示しますか? – Aryan