Im работает над карточной игрой, используя libgdx и scene2d. Класс моей карты расширяет класс актера изображения. Я пытаюсь найти способ установить порядок отображения моих карт на основе их позиции x при перетаскивании.Как настроить индекс actor z на основе x?
Так я пробовал:
@Override
public void drag(InputEvent event, float x, float y, int pointer) {
float sx = event.getStageX();
float sy = event.getStageY();
if(sx - offsetX > 0 && sy - offsetY > 0){
event.getTarget().setPosition(sx - offsetX, sy - offsetY);
c.setZIndex((int) sx);
}
}
Это не будет работать, потому что по-видимому, ZIndex связан с числом участников в стадии/группы. Поэтому в основном индекс должен быть 0-4. Мой следующий подход состоял в том, чтобы разделить ширину экрана на 5 и установить это для zindex. Он отлично работает, если карты разделены равномерно по всей ширине. Но если карты сжимаются посередине, они не выглядят хорошо. От 2 до 3 карт выпадают посередине, а последний перетаскиваемый - тот, который нарисован поверх других. Который я не хочу.
Мой последний подход состоял в том, чтобы заказать все мои карты по их положению и петле через них, указав z-index. И это работает, как я хочу, но я нахожу его медленным (когда все остальные вещи добавляются в микс)
Так или иначе, я могу установить z-индекс относительно x-позиции без петли через актеров?
Значит, мне все равно придется проходить через этот массив (точек)? мой вопрос состоял в том, как это сделать, не зацикливаясь на нем. О функции свопа группы, плохо попробуйте это. Но опять же, мне нужно было бы найти актера, чтобы поменять его ..:/Могу ли я сделать это, не зацикливая всех актеров? – noisyass2
Вы недооцениваете силу аппаратного обеспечения. Если у вас есть сто актеров, и вы зацикливаете массив (помните, что ваш массив очень светлый. Все, что он содержит, это векторы. Vector2 posArray []), это не приведет к развалу. Независимо от того, что вы еще должны сказать libGDX для рисования. Следовательно, libgdx должен проходить через игроков. –
@ noisyass2 Попробуйте бенчмаркинг. Бьюсь об заклад, первое предложение использования массива будет намного быстрее. –