Я посмотрел ваш код и нашел ошибку.
Вы сказали, что стандартный класс Image
работает, но ваш наследник - нет.Это происходит потому, что вы устанавливаете drawable
для них по-разному.Для Image
вы используете конструктор, который автоматически устанавливает его размер, см .:
/** One of constructors called from other */
public Image (Drawable drawable, Scaling scaling, int align) {
setDrawable(drawable);
this.scaling = scaling;
this.align = align;
setSize(getPrefWidth(), getPrefHeight()); // see
}
Но когда вы используете пустой конструктор и устанавливаете drawable вручную, размер остается нулевым.
Итак, решениеэто установить его в ImageAnimationTextureRegion
в act()
:
override fun act(delta: Float) {
if (..) {
val frame = this.animation!!.getKeyFrame(time, true)
drawable = TextureRegionDrawable(frame)
setSize(prefWidth, prefHeight)
}
Я видел часть вашего кода.Вы пишете на Kotlin, как на Java, в стандартной библиотеке есть много полезных методов, которые вы не используете.Вы используете null-safety
неправильно.Не пишите ключевое слово this
везде, оно используется для других целей, прочитайте об этом.
Кстати, есть хорошая книга о Kotlin на русском языке - "Котлин в действии".