2015-09-09 2 views
1

Я только начал прототип с libGDX, чтобы понять, как это работает. Я хочу реализовать сетку (например, игру в шахматы), и когда я нажимаю/прикасаюсь к коробке сетки, это меняет образ.libgdx как добавить clicklistener на изображениях

Я нашел хороший учебник, но он использует только прослушиватель клавиатуры и в Интернете. Я не могу найти хороший пример, который разъясняет мне эту механику.

То, что я не понимаю, в основном: что использовать для рендеринга ящиков (на данный момент я использовал только SpriteBatch и ShapeRenderer) и как определить, когда был нажат e (я думаю, что вычисление координат не было хорошим способ, которым нужно следовать. Я полагаю, что лучший способ - добавить в каждый ящик прослушиватель кликов, чтобы определить, когда он щелкнет, но я не знаю, как это кодировать).

Спасибо за любое предложение, если у вас есть пример, это может мне очень помочь.

ответ

1
Image image = new Image(); 

image.addListener(new ClickListener(){ 
    @Override 
    public void clicked(InputEvent event, float x, float y) { 
     System.out.println("You clicked an image..."); 
    } 
}); 

Теперь мы можем добавить это изображение, чтобы что-то вроде Table или непосредственно к Stage.

Как упоминалось в dtx12, вы должны изучить Scene2D. Вероятно, вы хотите настроить сетку, используя таблицу.

Table chessTable = new Table(); 
int boardHeight = 8; 
int boardWidth = 8; 

for (int y = 0; y < boardHeight; y++) 
{ 
    for (int x = 0; x < boardWidth; x++) 
    { 
     //Check if dividable by two to make checker pattern and add cell to table. 
     if (x + y % 2 == 0) 
      chessTable.add(blackImage); 
     else 
      chessTable.add(whiteImage); 
    } 
    //Add a new row to table 
    chessTable.row(); 
} 
+0

Большое вам спасибо, ваш пример в сочетании с этим учебником scene2d: [link] (http://www.gamefromscratch.com/post/2013/11/27/LibGDX-Tutorial-9-Scene2D-Part-1.aspx) объяснили, как работает clickListener. Честно говоря, я до сих пор не понял, как визуализировать содержимое таблицы, но не нужно для моего примера игры. –

+0

@ newUser.java Ну, сцена обрабатывает рисунок для вас. Вы добавляете таблицу на сцену и в методе обновления вы просто вызываете stage.draw(). Но для того, чтобы правильно понять, вы действительно должны прочитать еще кое-что о «Scene2D» и, возможно, сделать учебное пособие по этому вопросу, есть много. Если мой ответ - это то, что вы ищете, подумайте о его принятии и получите 2 представителя в процессе;). – Madmenyo

+0

Я полагал, что я уже выбрал ответ, свою ошибку. –

0

Scene2d является лучшим в ваших целях, проверьте документацию. https://github.com/libgdx/libgdx/wiki/Scene2d

Вы можете добавить ActorGestureListener в созданный актер, например. Для визуализации чего-либо с использованием ShapeRenderer вы можете переопределить метод draw актора и применить к ним матрицу. Но было бы лучше иметь простой образ с прямоугольником вместо того, чтобы использовать ShapeRenderer, если вам нужно только рисовать прямоугольники. Выберите вариант, который вам больше нравится.

+0

спасибо, я изучаю это. –

+0

Хотя вопрос очень низкий, мы не должны просто ссылаться на документацию. По крайней мере, скопируйте часть документации в свой вопрос, кроме ссылки для источника. – Madmenyo

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