Je fais du jeu en utilisant le langage Kotlin + la librairie LibGDX.Quelle est la différence entre get et [] call in Kotlin?
Version Kotlin: 1.1.2-4
Version LibGDX: 1.9.6
Comme documentation officielle dit
"[] operation stands for calls to member functions get() and set()."
Mais, quand je tente d'exécuter cette ligne de code:
body.userData = animations[state[e].currentState]!!.keyFrames[frame]
Je reçois cette erreur:
Exception in thread "LWJGL Application" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Lcom.badlogic.gdx.graphics.g2d.TextureRegion;
Cependant quand je change [] pour obtenir():
body.userData = animations[state[e].currentState]!!.keyFrames.get(frame)
Tout devient ok. PS: "frame" est un angle, converti en Int.
UPD: Je changé mon code peu
val animation: Animation = anim[e].animations[state[e].currentState]!!
val tex = animation.keyFrames[frame] // Get exception on this line anyway
body[e].body.userData = tex
« e » est l'entité refrence de Ashley. "Body", "anim" et "state" sont des mappeurs de composants Ashley. Pour ceux qui ne savent pas ce que LibGDX est ici est la classe d'animation keyFrames ici est juste un tableau Java.
UPD 2: j'ai remarqué ce problème se produit uniquement lorsque j'utilise ce constructeur:
Animation(float frameDuration, Array<? extends T> keyFrames)
Ressemble problème interopérable.
Quel est le type de 'keyFrames'? –
quelle version de LibGDX utilisez-vous? – Aryan
@AbhishekAryan 1.9.6 – icarumbas