Ответы пользователя по тегу Java
  • Насколько актуален LibGDX?

    @exenza
    Проект LibGDX до сих пор активно развивается, уже с новой командой разработчиков. У них даже сайт новый - libgdx.com, вместо старого badlogicgames.com.
    Хотя книги и видео уроки не самые свежие (неправда, судя по отзывам - неплохая серия), но думаю что там не сильно уж что-то поменялось. Самый лучший конечно вариант читать доку на сайте и вики на гитхабе. А еще у них хорошее комьюнити с дискордом.
    Ну и не такой уж это и хардкор. В юнити, конечно все собрано в одном месте и под рукой для удобства разработки. Но LibGDX тоже отлично подходит, если хочется использовать JVM язык
    Ответ написан
    1 комментарий
  • Почему Shaperenderer не хочет изменять прозрачность?

    @exenza
    А что вообще рендерится? Прямоугольник рисуется?

    Трудно так сразу сказать - все-таки не понятно откуда этот `disappearingTentacle` вызывается и много остального не показано. Попробуйте упростить и подебажить.
    В качестве отправной точки вот простенький рабочий пример:
    package com.mygdx.game;
    
    import com.badlogic.gdx.ApplicationAdapter;
    import com.badlogic.gdx.Gdx;
    import com.badlogic.gdx.graphics.Color;
    import com.badlogic.gdx.graphics.GL20;
    import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
    
    public class RectrenderTest extends ApplicationAdapter {
        private ShapeRenderer shapeRenderer;
        private float alpha = 1f;
        private float dAlpha = -0.5f;
        private boolean fadingOut = true;
    
        @Override
        public void create() {
            shapeRenderer = new ShapeRenderer();
        }
    
        @Override
        public void render() {
            Gdx.gl.glClearColor(1, 0, 0, 1);
            Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    
            // Включается блендинг:
            Gdx.gl.glEnable(GL20.GL_BLEND);
            Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
            // Задается форма:
            shapeRenderer.begin(ShapeRenderer.ShapeType.Line);
            update(Gdx.graphics.getDeltaTime());
            // Задается цвет и прозрачность alpha:
            shapeRenderer.setColor(new Color(1, 1, 1, alpha));
            // Рисуется линия:
            shapeRenderer.line(0, 0, 470, 350);
            shapeRenderer.end();
            // Выключается блендинг:
            Gdx.gl.glDisable(GL20.GL_BLEND);
        }
    
        private void update(float dt) {
            // System.out.println("dt=" + dt + ", alpha=" + alpha + ", dAlpha=" + dAlpha);
            // Если прозрачность за пределами допустимых значений, меняем направление
            if (fadingOut && alpha <= 0 || !fadingOut && alpha >= 1f) {
                dAlpha = -dAlpha;
                fadingOut = !fadingOut;
            }
            alpha += dAlpha * dt;
        }
    
        @Override
        public void dispose() {
            shapeRenderer.dispose();
        }
    }
    Ответ написан
    Комментировать
  • Прокладка пути, libgdx, tiledmap?

    @exenza
    Привет. Есть libgdx-совместимая библиотека gdx-ai. В которой реализованы алгоритмы поиска путей, почитать тут и начни с теории тут. Пример применения, например, ват.
    Удачи!
    Ответ написан
    Комментировать
  • Как отзеркалить текстуру в libgdx?

    @exenza
    Вот такой код у меня отражает вашу текстуру слева направо:
    sb.begin();
    Texture unnamed = new Texture("unnamed.png");
    int width = unnamed.getWidth();
    int height = unnamed.getHeight();
    sb.draw(unnamed, 350, 350, width, height, 0, 0, width, height, true, false);
    sb.end();


    Но я бы предпочел спрайт:
    sb.begin();
    Texture unnamed = new Texture("unnamed.png");
    Sprite sprite = new Sprite(unnamed);
    sprite.flip(true, false);
    sprite.setCenter(700, 600);
    sprite.draw(sb);
    sb.end();
    Ответ написан
    1 комментарий
  • Где взять нужную библиотеку для работы с SQLite?

    @exenza
    SQLite не прилетает по дефолту в LibGdx, да и про такую галку я не слышал.
    Есть библиотека https://github.com/dotw/gdx-sqlite для LibGdx работы с SQLite
    stackoverflow.com/a/18576766/5007340
    Ответ написан
  • Почему не стартует jboss?

    @exenza
    в 13 году был вот такой ответ от разрабов JB: Yes I can confirm, AS7.1.1 wont start on JDK8.
    еще:

    Yes it is normal.

    There have been some changes in JDK8 that prevent AS7 and current version of EAP6 to start under JDK8.

    We have many JDK8 related fixes in WildFly so I would recommend you to use that.
    As for EAP goes, the start up on JDK8 is fixed in upcoming 6.2 release.

    So in short, I would be more then welcome if people would test WildFly on JDK8 as we are working on making whole testsuite pass on it.

    так что если вы на JDK1.8, то попробуйте 1.7
    а вот совет как остаться на JDK1.8, коротко - использовать WildFly
    Ответ написан
  • В чем проблема Java- трансформации, преобразующей blob в pdf?

    @exenza
    У меня, вот так, работает:
    Class.forName("org.h2.Driver");
    Connection conn = DriverManager.getConnection("jdbc:h2:tcp://localhost:9092/~/Downloads/h2/mydb", "sa", "");
    PreparedStatement ps = conn.prepareStatement("select PDF from FILES");
    ResultSet rs = ps.executeQuery();
    
    Blob blob = null;
    if (rs.next()) blob = rs.getBlob("PDF");
    
    if (blob != null) {
        File myPdf = new File("mypdf.pdf");
        ByteArrayInputStream is = new ByteArrayInputStream(blob.getBytes(0, (int) blob.length()));
        FileOutputStream fos = new FileOutputStream(myPdf);
        byte[] buf = new byte[is.available()];
        is.read(buf, 0, buf.length);
        fos.write(buf);
        is.close();
        fos.close();
    }


    как вариант отдебажьте свой код из какой-нить человеческой IDE, а потом запустите из Informatica (я не знаком с ней, по виду что-то древнее)
    Ответ написан
    Комментировать
  • Каким образом отличить нажатие клавиши "влево" от Num 4 с отключенным Num Lock?

    @exenza
    В моем случае jnativehook отдает одинаковае keyCode, но keyRawCode - разные (версия 2.0.2):
    • Key code: 75, raw code: 65430 без NUM LOCK
    • Key code: 75, raw code: 65460 с нажатым NUM LOCK


    Пример:
    import org.jnativehook.GlobalScreen;
    import org.jnativehook.NativeHookException;
    import org.jnativehook.keyboard.NativeKeyEvent;
    import org.jnativehook.keyboard.NativeKeyListener;
    
    public class KeyEventDemo implements NativeKeyListener {
    
        public static void main(String[] args) {
            try {
                GlobalScreen.registerNativeHook();
            }
            catch (NativeHookException ex) {
                System.err.println(ex.getMessage());
                System.exit(1);
            }
    
            GlobalScreen.addNativeKeyListener(new KeyEventDemo());
        }
    
        @Override
        public void nativeKeyPressed(final NativeKeyEvent nativeKeyEvent) {
            System.out.println("Key code: " + nativeKeyEvent.getKeyCode()
                    + ", raw code: " + nativeKeyEvent.getRawCode());
        }
    
        @Override
        public void nativeKeyReleased(final NativeKeyEvent nativeKeyEvent) {}
    
        @Override
        public void nativeKeyTyped(final NativeKeyEvent nativeKeyEvent) {}
    }

    @param rawCode the hardware code associated with the native key in this event.
    Ответ написан
    8 комментариев
  • Знаете ли вы алгоритм стягивания графа?

    @exenza
    Вы смотрели на алгоритм поиска минимального разреза Каргера, он основан на стягивании. Какая у вас задача? Хотите скукожить граф до 20 вершин?
    Ответ написан
  • Стоит ли разрабатывать на libGDX под PC?

    @exenza
    LibGDX задумывался как кроссплаформенный фреймворк с одной кодовой базой для разных устройств (изначально вообще только для Android); и он самый популярный сейчас для Java.
    У него куча разных фич, в т.ч. библиотеки работы с LWJGL, Box2D (что само по себе мощная связка) и разные утилиты.
    + Большое комьюнити.
    Вам чего-то конкретного не хватает?

    Как альтернатива может выступить Jmonkey, который хорош для 3D и не так хорош для 2D.
    Ответ написан
    Комментировать
  • Как работать со светом в LibGDX?

    @exenza
    RayHandler - класс библиотеки box2dLights
    Добавьте его в build.gradle:
    compile "com.badlogicgames.box2dlights:box2dlights:1.4"

    Вот короткий howto, а вот пример использования.
    Ответ написан
    2 комментария
  • Идти ли в QA Automation для развития как Developer?

    @exenza
    Бывший колега конвертнулся из тестера (ручное тестирование) в дева очень успешно - делал backend на java, но потом ушел во frontend. У нас в конторе много продуктов и они сложно переплетаются, поэтому его бекграунд очень ему помогал - он даже написал фреймворк по автоматиции установки и интеграции дев-окружения (который до сих пор используется, хотя чувак уже в другой конторе)

    Кругом слышно, что у java высокий порог вхождения, поэтому устроившись на автоматизацию можно его сгладить, имхо. Умение автоматизации - тоже полезно (у нас мы сами пишем тесты Cucumber + Selenium). Главное не засиживаться, когда (если) станет скучно - брутально валить в дев. Это будет сделать проще с записью в трудовой.
    Ответ написан
    Комментировать
  • Почему не public переменная, а функции get/set?

    @exenza
    Сеттеры частенько делают проверки и валидации значений; в случае геттеров, они могут комбинировать значения нескольких полей. Логика меняется в одном месте, а не во многих.

    Java библиотеки, например сериализация, а соответственно и фреймворки, основанные на них, используют геттеры и сеттеры
    Ответ написан
    Комментировать
  • Генератор цифр(изображений) для тестов на Java?

    @exenza
    Посмотрите вот этот оракловский тюториал как работать с изображениями - секции Drawing an Image и Writing/Saving an Image.

    как пример:

    600d09bdd65c4240b856d72e2a8c793a.jpeg
    import javax.imageio.ImageIO;
    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.util.Random;
    
    public class Test {
    
        private final static int MAX = 999_999;
        private final static int MIN = 100_000;
        private final static int IMAGE_WIDTH = 50;
        private final static int IMAGE_HEIGHT = 10;
        private final static int FONT_SIZE = 12;
        private final static int TEXT_COORD_X = 0;
        private final static int TEXT_COORD_Y = 10;
        private final static String FILEPATH_TO_SAVE = "/home/max/Pictures/image.jpeg";
    
        public static void main(String[] args) {
    
            BufferedImage image = new BufferedImage(IMAGE_WIDTH, IMAGE_HEIGHT, BufferedImage.TYPE_INT_ARGB);
    
            Graphics2D g2 = image.createGraphics();
            g2.setFont(new Font("SansSerif", Font.PLAIN, FONT_SIZE));
    
            g2.drawString(getRandomNumber().toString(), TEXT_COORD_X, TEXT_COORD_Y);
    
            try {
                ImageIO.write(image, "jpeg", new File(FILEPATH_TO_SAVE));
            } catch(IOException ex) {
                ex.printStackTrace();
            }
        }
    
        private static Integer getRandomNumber() {
            Random random = new Random();
            return random.nextInt((MAX - MIN) + 1) + MIN;
        }
    }
    Ответ написан
    Комментировать
  • Почему Tile Map не загружается?

    @exenza
    1. проверьте Run -> Edit Configurations -> Desktop (или как вы там его назвали), что Working directory = "your_project_path/core/assets"
    2. убедитесь, что файл в папке maps (на скрине не видно)
    3. переложите файл в корень assets и проверьте
    4. дебажить
    Ответ написан
    4 комментария
  • Как из строки String получить первое и второе слово в переменные?

    @exenza
    да, со StringTokeizer вроде просто:
    StringTokenizer tokenizer = new StringTokenizer(inputSentence);
    String firstArg = tokenizer.hasMoreTokens() ? tokenizer.nextToken() : "";
    String secondArg = tokenizer.hasMoreTokens() ? tokenizer.nextToken() : "";
    Ответ написан
    Комментировать
  • Как поймать событие touchup после двойного клика?

    @exenza
    Посмотрите на GestureDetector, в частности, метод tap обрабатывает мультитач; wiki
    Ответ написан
    1 комментарий
  • Расчет рабочих часов между двумя датами?

    @exenza
    Objectlabkit - обертка над joda-time.
    Или расчет рабочих часов от jBPM
    Ответ написан
    Комментировать
  • Как на JAVA открыть страницу, ввести логин и пароль, а после входа скачать файл?

    @exenza
    Попробуйте так:
    Response res = Jsoup
        .connect("/url/to/login")
        .data("input[login]", "admin")
        .data("input[pass]", "QWERTY1234")
        .method(Method.POST)
        .execute();
    Document doc = res.parse();
    
    Document doc2 = Jsoup
        .connect("/url/to/file")
        .cookies(res.cookies())
        .get();


    Или высокоуровневую библиотеку jWebUnit, она достаточно простая
    Ответ написан
  • Почему появляется NPE?

    @exenza
    Добавьте проверку на ноль. JavaDoc, Stackoverflow
    String htmlTag = htmlArray.get(i);
    if (htmlTag != null && htmlTag.contains(strSourceTag))                         ///вот тут нпе
        arrayPoimey.add(htmlTag);
    Ответ написан
    Комментировать