2014-12-20 2 views
0

В настоящее время я работаю над диалоговым окном для своей игры Android, используя libgdx. Это диалоговое окно содержит набор меток и кнопок, но также должно содержать изображение. Изображение представляет собой «оставшийся индикатор работоспособности», то есть пустой индикатор с символом, указывающим здоровье плеера. Этот индикатор должен быть заполнен цветным прямоугольником, представляющим оставшееся количество здоровья (см. Снимок экрана ниже).Рисование фигур и изображений в диалоге libgdx

enter image description here

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

Это код, который я до сих пор:

public FuelFacilityDialog(GameWorld world, GuiComponent gui) { 
    super("Health check", gui.defaultSkin); 

    this.world = world; 
    this.gui = gui; 

    setModal(true); 
    setMovable(false); 
    setResizable(false); 

    Image healthIndicator = new Image(); 
    Button button1 = new TextButton("heal", gui.defaultSkin); 
    Button button4 = new TextButton("Exit", gui.defaultSkin); 

    healthIndicator.setDrawable(new TextureRegionDrawable(AssetLoader.healthIndicatorV)); 
    healthIndicator.setScaling(Scaling.fit); 
    setObject(button1, true); 
    setObject(button4, false); 

    Table imageTable = new Table(); 
    Table buttonTable = new Table(); 

    imageTable.add(healthIndicator).width(100).height(200); 
    buttonTable.add(button1).width(100).height(50).expandY(); 

    this.getContentTable().padTop(20); 
    this.getContentTable().padBottom(20); 
    this.getContentTable().add(imageTable); 
    this.getContentTable().add(buttonTable).height(200); 
    getButtonTable().add(button2); 
} 
+0

Вы можете использовать ShapeRenderer для рисования своего рода бара здоровья. http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/glutils/ShapeRenderer.html –

ответ

1

Я нашел ответ на мою проблему. Чтобы нарисовать изображение и фигуру, можно использовать pixmap. Можно сначала создать pixmap, на котором вы рисуете прямоугольник. Затем вы создаете еще одну pixmap, на которой вы рисуете изображение. Оба pixmap тогда могут быть объединены, рисуя одну pixmap на другую.

Это код, который я использую для создания изображения, содержащего прямоугольник, указывающий фактический уровень здоровья, и рисование на нем индикатора.

private Image getHealthIndicatorImage() { 
     Image indicatorImage = new Image(); 
     Pixmap healthIndicator = new Pixmap(AssetLoader.healthIndicatorV); 
     Pixmap healthLevel = new Pixmap(healthIndicator.getWidth(), healthIndicator.getHeight(), Format.RGBA8888); 

     healthLevel.setColor(Config.InstrumentPanel.healthInstrumentColor1); 
     healthLevel.fillRectangle(0, 0, 50, 50); 
     healthLevel.drawPixmap(healthIndicator, 0, 0); 

     indicatorImage.setDrawable(new TextureRegionDrawable(new TextureRegion(new Texture(healthLevel)))); 
     indicatorImage.setScaling(Scaling.fit); 

     return indicatorImage; 
    } 
Смежные вопросы