2016-06-20 2 views
0

Я пытаюсь создать бесконечно циклическую анимацию в libgdx. Проблема заключается в том, когда я запускаю его, анимация запускает первый цикл, но затем вылетает из-за исключения NullPointerException.LibGDX - Создание бесконечно цикличной анимации

Я поставил анимацию PLAYMODE в цикле, устанавливая логическое зацикливание истина при вызове getKeyFrame():

currentFrame = globeAnimation.getKeyFrame(time, true); 

Когда я запускаю это, он будет работать на ключевых кадрах 1-40 (число кадры в моей анимации, но тогда сбой с этой ошибкой второго он достигает ключевой кадр 41 с этим сообщением об ошибке:

java.lang.NullPointerException 

Я также попытался установить PLAYMODE к петле, установив его в конструкторе:

globeAnimation = new Animation(GLOBE_ANIMATION_FRAME_RATE, globeAnimationTextureRegions, PlayMode.LOOP); 

По какой-то причине, когда я это делаю, это дает мне ошибку о том, что он

cannot resovle constructor for 
Animation(float,TextureRegion[],PlayMode) constructor Animation.Animation(float,Array<? extends TextureRegion>,PlayMode) 

Это не имеет смысла для меня, потому что основа имеет конструктор, который принимает эти точные параметры.

public Animation (float frameDuration, Array<? extends TextureRegion> keyFrames, PlayMode playMode) { 

    this.frameDuration = frameDuration; 
    this.animationDuration = keyFrames.size * frameDuration; 
    this.keyFrames = new TextureRegion[keyFrames.size]; 
    for (int i = 0, n = keyFrames.size; i < n; i++) { 
     this.keyFrames[i] = keyFrames.get(i); 
    } 

    this.playMode = playMode; 
} 

Может кто-нибудь объяснить, почему этот конструктор не работает или альтернативный путь к этой работе.

Edit:

Фил Андерсон выяснил, почему конструктор не решал: мне пришлось заменить globeAnimationTextureRegions с

new Array<TextureRegion>(globeAnimationTextureRegions). 

для конструктора, чтобы решить.

+0

Убедитесь, что вы импортировали правильный тип анимации (проверить имя пакета). – Tenfour04

+0

@ Tenfour04 Я импортировал com.badlogic.gdx.graphics.g2d.Animation – Bhaskar

ответ

2

Вы получаете эту ошибку ...

cannot resovle constructor for 
Animation(float,TextureRegion[],PlayMode) constructor Animation.Animation(float,Array<? extends TextureRegion>,PlayMode) 

, потому что вы будете переходящий в массив Java из TextureRegions, и тип параметра является libGdx массив объект родового типа TextureRegion.

Попробуйте что-то вроде ...

globeAnimation = new Animation(GLOBE_ANIMATION_FRAME_RATE, new Array<TextureRegion>(globeAnimationTextureRegions), PlayMode.LOOP); 
+0

Ваша идея исправила конструктор, который не разрешил, и разрешил PlayMode установить LOOP, но по какой-то причине он по-прежнему дает мне исключение NullPointerException после запуска первый цикл анимации. Кажется, что PlayMode.LOOP фактически не функционирует, как предполагалось. Вы думаете, что что-то не так с каркасом, или я делаю что-то неправильно? – Bhaskar

+0

На самом деле, nvm, ваш ответ действительно исправить, был только один небольшой манекен, который закручивал вещи. Спасибо! – Bhaskar

Смежные вопросы