내 게임에 LibDGX 라이브러리를 사용하고 있습니다. 그리고 나는 일반적인 예외 ClassCastException
에 직면하지만 이상한 경우에 발생합니다.[] 호출을 사용할 때 이상한 java.lang.ClassCastException
저는 LibGDX 라이브러리의 Animation 클래스를 사용하고 있습니다.
[]
작업을 사용하는 경우에만이 줄에 오류가 표시됩니다. 내가 get()
오류로 변경하는 경우
val tex = animation.keyFrames[0]
는을 사라집니다.
tex = animation.keyFrames.get(0)
다음은 전체 방법입니다. 나는 예제를 단순화했다.
override fun create() {
val frames = Array<TextureRegion>()
frames.add(TextureRegion(Texture("badlogic.jpg")))
val animation = Animation(frames)
val tex1 = animation.keyFrames.get(0) // Compiles
val tex = animation.keyFrames[0] // error - [Ljava.lang.Object; cannot be cast to [Lcom.badlogic.gdx.graphics.g2d.TextureRegion;
}
이상한가요?
다른 오류 이유를 최소화하는 데 사용한 애니메이션 클래스는 다음과 같습니다. LibGDX api에서와 동일합니다. 내가하지 코 틀린에서 LibGDX Array을 의미 대신 Array<TextureRegion>
을 만드는 Array.with
건설을 사용하는 경우 나 또한 그 오류 을 발견
public class Animation<T> {
T[] keyFrames;
private float frameDuration;
public Animation (float frameDuration, Array<? extends T> keyFrames) {
this.frameDuration = frameDuration;
Class arrayType = keyFrames.items.getClass().getComponentType();
T[] frames = (T[]) ArrayReflection.newInstance(arrayType, keyFrames.size);
for (int i = 0, n = keyFrames.size; i < n; i++) {
frames[i] = keyFrames.get(i);
}
setKeyFrames(frames);
}
protected void setKeyFrames (T... keyFrames) {
this.keyFrames = keyFrames;
}
}
는을 사라집니다. 이 문제가 발생하거나 버그 가능한 이유
val animation = Animation(Array.with(TextureRegion(Texture("badlogic.jpg"))))
당신은 나에게 이유를 말씀해 주시겠습니까?
이것은 동일한 'Animation' 클래스 ['Animation' (아니다 https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/ graphics/g2d/Animation.html)에이 생성자가 없습니다. – Moira
@ 1blustone 좋아, 이제 좋니? 그러나 그것은 이해가되지 않습니다 ... 나는 더 읽기 쉽게하려고 노력했습니다. 오류가 발생합니다. – icarumbas
아, 지금은 이해가됩니다.현재 소스가 아직 공개되지 않은 상태입니다. 이 버그가 수정 될 것으로 보인다 다음 릴리스에서 내 대답을 참조하십시오 :) – Moira