2014-09-28 4 views
2

У меня возникла проблема с отличной библиотекой scene2d библиотеки libGDX, когда я запускаю свое приложение в ландшафтном режиме. Моя программа работает как в симуляторе Android, так и в среде рабочего стола, но когда я запускаю его на симуляторе iOS или реальном устройстве, основное меню рисуется так, как будто телефон все еще находится в портретной ориентации, а только что обрезается до вписывается в пейзаж. Сначала я предположил, что я просто напортачил, поскольку я все еще изучаю api, но приложение работает так же, как ожидалось на Android. Я настроил свою игру для работы в ландшафтном режиме на iOS и Android.libgdx - ландшафт iOS не работает прямо с scene2d

На Android-симуляторе меню работает так, как ожидалось. Симулятор находится в альбомной ориентации и правильно отображает меню.

В iOS меню отключено от центра и неприступно.

Я довольно уверен, что проблема связана с ландшафтным режимом, потому что все работает отлично в портретной ориентации. Вот мой код для MainMenuScreen, который расширяет ScreenAdapter.

package bakpakin.techgame; 

import com.badlogic.gdx.Gdx; 
import com.badlogic.gdx.ScreenAdapter; 
import com.badlogic.gdx.graphics.Color; 
import com.badlogic.gdx.graphics.GL20; 
import com.badlogic.gdx.scenes.scene2d.Actor; 
import com.badlogic.gdx.scenes.scene2d.Stage; 
import com.badlogic.gdx.scenes.scene2d.ui.*; 
import com.badlogic.gdx.scenes.scene2d.ui.TextButton.TextButtonStyle; 
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; 

/** 
* Created by Calvin on 9/25/14. 
*/ 
public class MainMenuScreen extends ScreenAdapter { 

private TechGame game; 
private Stage stage; 
private Skin skin; 
private Table table; 

public MainMenuScreen(TechGame game) { 
    this.game = game; 
} 

@Override 
public void show() { 
    this.stage = new Stage(); 
    this.skin = new Skin(); 

    skin.add("default", Assets.superScript48); 
    skin.add("title", Assets.superScript128); 

    TextButtonStyle textButtonStyle = new TextButtonStyle(); 
    textButtonStyle.font = skin.getFont("default"); 
    textButtonStyle.pressedOffsetY = 4; 
    skin.add("default", textButtonStyle); 

    Label.LabelStyle labelStyle = new Label.LabelStyle(); 
    labelStyle.font = skin.getFont("title"); 
    labelStyle.fontColor = Color.CYAN; 
    skin.add("default", labelStyle); 

    // Create a table that fills the screen. Everything else will go inside this table. 
    table = new Table(); 
    table.setFillParent(true); 
    stage.addActor(table); 

    final TextButton play = new TextButton("Play", skin); 
    final TextButton about = new TextButton("About", skin); 
    final TextButton quit = new TextButton("Quit", skin); 

    play.addListener(new ChangeListener() { 
     @Override 
     public void changed(ChangeEvent event, Actor actor) { 
      Assets.button1Sound.play(1, 1, 0); 
     } 
    }); 

    about.addListener(new ChangeListener() { 
     @Override 
     public void changed(ChangeEvent event, Actor actor) { 
      Assets.button1Sound.play(1, 1, 0); 
     } 
    }); 

    quit.addListener(new ChangeListener() { 
     @Override 
     public void changed(ChangeEvent event, Actor actor) { 
      Assets.button1Sound.play(1, 1, 0); 
      Gdx.app.exit(); 
     } 
    }); 

    final Label title = new Label("My Game", skin); 

    VerticalGroup vg = new VerticalGroup(); 

    vg.pad(60); 

    table.add(title); 
    table.row(); 
    table.add(vg); 

    vg.addActor(play); 
    vg.addActor(about); 
    vg.addActor(quit); 

    Gdx.input.setInputProcessor(stage); 
} 

@Override 
public void render(float delta) { 

    GL20 gl = Gdx.gl; 
    gl.glClearColor(0, 0, 0, 1); 
    gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT); 

    stage.act(delta); 
    stage.draw(); 
} 

@Override 
public void dispose() { 
    stage.dispose(); 
    skin.dispose(); 
} 
} 

ответ

0

IOS 7 или 8? Я слышал, что есть некоторые проблемы с выпуском iOS 8.

По-видимому, это исправлено в последнем снимке (см. Github.com/libgdx/libgdx/issues/2386). С новым стабильным выпуском, обещанным реальным вскоре, теперь я уверен, что исправление будет сложено, если вы недостаточно храбры, чтобы запускать сборки моментальных снимков

+0

Im using iOS 8.0 (550.1) –