Вы можете использовать GestureDetector для обработки ввода панорамирования. Метод gestureListener.pan
может обновить параметр позиции анимации.
private int screenPixelsToAnimationPositionRatio = 0.01f; //will need to tweak this and probably adjust it at runtime based on screen dimensions and resolution
private float animationPosition = 0; //from 0 to 1, fraction of animation complete
public void create() {
//...
GestureAdapter gestureAdapter = new GestureAdapter {
@Override
public boolean pan (float x, float y, float deltaX, float deltaY) {
animationPosition += deltaX * screenPixelsToAnimationPositionRatio;
animationPosition = MathUtils.clamp(animationPosition, 0, 1);
return true;
}
};
GestureDetector gestureDetector = new GestureDetector(gestureAdapter);
Gdx.input.setInputProcessor(gestureDetector); //or put the detector in an InputMultiplexer with your other input listeners.
}
Тогда вы можете создать метод, который может обновлять положение и вращение вашего объекта на основе текущей стоимости animationPosition
. Вам нужно будет выяснить уравнения, которые определяют движение, которое вы хотите. Например, то, что выглядит вроде как то, что вы показано выше:
private void updateAnimation(){
x = animationPosition * 30;
float y = 0, rotation = 0;
if (animationPosition >= 0.25f) {
float jumpPosition = Math.min(1, (animationPosition - 0.25f)/0.5f);
y = 30 * (1 - Interpolation.pow2In.apply(Math.abs(2 * jumpPosition - 1)));
rotation = 180 * jumpPosition;
}
mySprite.setPosition(x, y);
mySprite.setRotation(rotation);
}
Затем вызовите этот метод обновления где-то в render
.
Имеют вид прокрутки. Контролируйте, сколько он прокрутил. Настройте анимацию для анимации в кадрах. анимация текущий кадр = Math.floor (scrollview.scrollX/scrollview.totalScrollX * animation.totalFrames) – Diniden
хорошо. проблема в том, что я не могу записывать фреймы заранее, потому что пользователю нужно создать собственный «синий прямоугольник». – brumbrum
Тогда вам придется объяснить более подробно ваш сценарий. Даже если пользователь создает свой собственный контент, вы должны иметь контроль над сгенерированными кадрами. Я не понимаю, как мой подход потребует «предварительно вычисленных» значений. – Diniden