Создаю свою кнопку по принципу прямоугольник,текстура,текст
buttons.add(new Button(new Rectangle(40,150,220,100),new TextureRegion(new Texture(Gdx.files.internal("knopka.png"))),"knopka");
Отрисовываю
for(Button b:buttons){
game.batch.draw(b.textureRegion,b.rect.x,b.rect.y,b.rect.width,b.rect.height);
}
После чего обработчиком нажатия отслеживаю попадание по кнопке
public boolean touchDown(int screenX, int screenY, int pointer, int button) {
for(Button b:buttons){
if(b.rect.contains(screenX,Gdx.graphics.getHeight()-screenY)){
b.func();
}
}
return false;
}
Обработчик срабатывает, но что-то с координатами, в режиме Desktop(компьютер) область захватывает больше, чем отрисовывается
В android вообще очень тяжело заставить кнопку сработать(она где-то в другом месте, не там, где отрисовывается)
Скорее всего дело с масштабированием в libGDX, как это исправить?
Камеру устанавливаю вот так
camera = new OrthographicCamera();
camera.setToOrtho(false, 800, 480);
и после делаю update камеры в рендере
Нужно делать перевод координат касания в проекцию координат камеры. Смысл в том, что координата касания зафисит физически от размера дисплея. А рабочая область у вас всегда 800х480 (вы её задаёте вручную) Я это решаю так:
Vector3 touchPos = new Vector3();
...
if (Gdx.input.isTouched()) { // в методе render
touchPos.set(Gdx.input.getX(), Gdx.input.getY(), 0);
camera.unproject(touchPos); // это и есть преобразование координат нажатия в ваши роабочие координаты (координаты камеры)
...
}
Дальше уже работайте с touchPos.x и touchPos.y (touchPos.z - не используется).
В вашем коде присвоение координат и преобразование нужно делать до if(b.rect.contains
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Добрый деньЕсть метод в контроллере с условием:
По-моему, довольно таки насущный вопросПрограммирую в Android Studio на ОС Ubuntu(16
Пишу приложение webJava В базе Oracle Имею доступ к нескольким пакетам (точнее к их синонимам), с процедурами и функциями