2015-09-16 1 views
0

Я знаю, как установить ширину и высоту изображения с помощью пиксельных координат. Есть ли способ установить относительные координаты? Я хочу иметь дело с несколькими экранами.libgdx изменить размер изображения на нескольких экранах соотношение

Например, у меня есть размер экрана 1920x1080. И у меня ширина относительных углов (-100,100) и высота = 200 * 1080/1920 = 112,5, высота (-56,25, 56,25)

Могу ли я использовать эти относительные координаты для установки ширины и высоты? а как это сделать? Есть ли какие-либо рекомендации по обработке различных соотношений экранов, правильное изменение ориентации рукоятки?

благодарит заранее.

вот как я использую его в моем приложении:

создать()

public void create() { 
     stage = new Stage(); 
      Gdx.input.setInputProcessor(stage); 

      camera = new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 
      camera.setToOrtho(true, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 
      camera.update(); 

Skin skinBackground = new Skin(); 
     skinBackground.add("background", new Texture(Gdx.files.absolute(FilePathSlicer.preparePath(taskSheet.background.getPicUrl())))); 
     background=new Image(skinBackground,"background"); 

     if(background!=null) { 
      background.setWidth(width); 
      background.setHeight(height); 
      stage.addActor(background); 
     } 
    } 

оказывают

public void render() { 
     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 
     Gdx.gl.glClearColor(255/255f, 255/255f, 255/255f, 1); 
     stage.getBatch().setProjectionMatrix(camera.combined); 
     stage.act(Gdx.graphics.getDeltaTime()); 
     stage.draw(); 
    } 

ответ

1

это то, что Viewports для. Видовой экран гибкий связан со сценой (на самом деле это что-то вроде прозрачности, что вы добавляете элементы [кнопки, метки и т. Д.]).

Он заботится о масштабировании таким образом, который вы определили, создав соответствующий тип окна просмотра.

Основных шагов:

//create() method 
     stage = new Stage(); //creating a stage 
     viewport = new FillViewport(screenWidth, screenHeight); //creating viewport choosing a proper Viewport class - for example Fill 

     stage.setViewport(viewport); //applying actors (buttons, labels etc...) to a stage 


    //render() method 
     stage.act(); //acting a stage to calculate positions of actors etc 
     stage.draw(); //drawing it to render all 

    //resize(width, height) method 
     viewport.update(width, height); //updateing viewport that it scales in proper way 

У вас есть много типов vieports как раз, например:

  • FillViewport - растягивает графики для заполнения дисплея
  • FitViewport - добавление черных полос, когда экран должен быть широко распространен
  • ExtendViewport - разрезать то, что находится вне экрана

и т. Д.

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

Чтобы узнать больше об этапах, актеры и видовых посетить: https://github.com/libgdx/libgdx/wiki/Scene2d


Вам не нужно заботиться о ориентации экрана - все, что вам нужно сделать, это определить свою ориентацию приложения в андроид Manifest

+0

спасибо помощнику. что относительно системы относительной координации? Является ли это возможным? –

+1

он позаботится также о позиции, поэтому вам не нужно думать о координатах –

+0

после того, как я использую FillViewport, я получаю пустой экран. Что может быть неправильным? –

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