Я реализую перетаскивание в Libgdx с помощью класса DragAndDrop. Актеры, которых мне нужно переместить, находятся в сетке (Таблица), в центре экрана.dragStart запускается в неправильном положении
Перетаскивание начинается, если я нажимаю в правом верхнем углу экрана, а не если я нажимаю на самого актера! Я не могу понять, где проблема.
Эта сетка представляет собой матрицу:
for(int i = 0; i < Constants.ROWS; i++) {
for(int j = 0; j < Constants.COLS; j++) {
slots[i][j] = new Slot(Item.EMPTY, i, j);
}
}
Тогда я использовать код выше, чтобы создать таблицу:
public class SlotsAreaActor extends Table {
public SlotsAreaActor(SlotsArea slotsArea, DragAndDrop dnd) {
// set the position of this actor in the screen
setPosition(Constants.SLOTS_AREA_ACTOR_X, Constants.SLOTS_AREA_ACTOR_Y);
// spaces all the row and the columns
defaults().space(Constants.ROWS_SPACE);
row().fill().expandX();
Slot[][] slots = slotsArea.getSlots();
for(int i = 0; i < slots.length; i++) {
for(int j = 0; j < slots[0].length; j++) {
SlotActor slotActor = new SlotActor(slots[i][j]);
dnd.addSource(new SlotSource(slotActor));
dnd.addTarget(new SlotTarget(slotActor));
add(slotActor);
}
row();
}
}
}
В классе SlotActor я установил границы:
x = Constants.APP_WIDTH - Constants.ORIZONTAL_OFFSET - (Constants.TILE_SIZE * (Constants.COLS - slot.getX()));
y = Constants.APP_HEIGHT - Constants.VERTICAL_OFFSET - (Constants.TILE_SIZE * (Constants.ROWS - slot.getY()));
setBounds(x, y, Constants.TILE_SIZE, Constants.TILE_SIZE);
Мои формулы неправильны ...
Объект Slot удерживает в матрице x (i, row) и y (j, column) в матрице. Объект Actor удерживает слот и вычисляет его положение на экране с помощью приведенных выше формул.
Другой вопрос: что такое float x и float y в методе dragStart?
UPDATE
Правильная формула у есть:
y = Constants.APP_HEIGHT - Constants.VERTICAL_OFFSET - (Constants.TILE_SIZE * slot.getX());
Но dragStart до сих пор не работает. Это совершенно не соответствует фазе. Перетаскивание не начинается, когда я нажимаю на актера, но если я нажму на область в правом верхнем углу экрана.
ОБНОВЛЕНИЕ 2
Проблема заключается в том позиционирование табл. Это полностью перепутано.
UPDATE 3
С table.setDebug (истинного) я проверил, что таблица находится в правильном положении. Итак ... я действительно не знаю, что происходит.