第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何輸出對齊對齊的文本

如何輸出對齊對齊的文本

慕慕森 2022-11-30 16:20:10
我正在嘗試為 libgdx 創(chuàng)建一個組件,它可以以與 html 對<p align=”justify”> ... </p>.我的想法是添加一些自定義組件,可以通過調(diào)整組件的相對 x 和 y 坐標來實現(xiàn)這一點。import java.util.ArrayList;import java.util.List;import com.badlogic.gdx.scenes.scene2d.Actor;import com.badlogic.gdx.scenes.scene2d.ui.Label;import com.badlogic.gdx.scenes.scene2d.ui.Label.LabelStyle;import com.badlogic.gdx.scenes.scene2d.ui.WidgetGroup;import com.badlogic.gdx.utils.Align;public class Paragraph extends WidgetGroup {    private Label space;    public Paragraph(String text, float width, LabelStyle style) {        super();        setWidth(width);        this.space = new Label(" ", style);        this.space.pack();        String[] words = text.split(" ");        for (String word : words) {            Label label = new Label(word, style);            label.pack();            addActor(label);        }        }    public void layout () {        float size = 0;        List<Actor> elements = new ArrayList<Actor>();        float x = getX(Align.topLeft);        float y = getY(Align.topLeft);        for (Actor actor : this.getChildren().items) {            if (actor != null) {                if (elements.isEmpty()) {                    elements.add(actor);                    size = actor.getWidth();                } else {                    if (size + space.getWidth() + actor.getWidth() <= this.getWidth()) {                        elements.add(actor);                        size += (space.getWidth() + actor.getWidth());                    } }我的問題是我用 getX(Align.topLeft) & getY(Align.topLeft) 檢索的 x 和 y 坐標總是返回 (0,0) 而不是舞臺上的真實坐標。所以最終的結(jié)果是不同段落中包含的所有文本都被繪制在彼此之上。不在位置 (0,0) 上,而是在周圍表格內(nèi)的相同位置上。
查看完整描述

1 回答

?
慕運維8079593

TA貢獻1876條經(jīng)驗 獲得超5個贊

我自己想出來了。


似乎為此覆蓋布局方法是個壞主意。我現(xiàn)在從構(gòu)造函數(shù)中調(diào)用一個不同的方法。


另外我弄亂了 x 和 y 坐標,所以我不得不重寫那個方法。


Ps.: 我也調(diào)整了這個問題,因為我想出了解決方案,它并不是關(guān)于小部件組的 x 和 y 坐標。


import java.util.ArrayList;

import java.util.List;


import com.badlogic.gdx.scenes.scene2d.Actor;

import com.badlogic.gdx.scenes.scene2d.ui.Label;

import com.badlogic.gdx.scenes.scene2d.ui.Label.LabelStyle;

import com.badlogic.gdx.scenes.scene2d.ui.WidgetGroup;

import com.badlogic.gdx.utils.Align;


public class Paragraph extends WidgetGroup {


    private static final class RowData {


        final List<Actor> elements;

        final float size;

        final boolean lastRow;


        RowData(List<Actor> elements, float size, boolean lastRow) {

            this.elements = elements;

            this.size = size;

            this.lastRow = lastRow;

        }


        static RowData createNewRow(List<Actor> elements, float size) {

            return new RowData(elements, size, false);

        }


        static RowData createLastRow(List<Actor> elements, float size) {

            return new RowData(elements, size, true);

        }

    }


    private Label space;


    public Paragraph(String text, float width, LabelStyle style) {


        super();

        setWidth(width);


        this.space = new Label(" ", style);

        this.space.pack();


        String[] words = text.split(" ");

        for (String word : words) {


            Label label = new Label(word, style);

            label.pack();


            addActor(label);

        }


        arrangeActors();

    }


    private void arrangeActors() {


        float size = 0;

        float height = space.getHeight();


        List<RowData> rows = new ArrayList<RowData>(); 

        List<Actor> elements = new ArrayList<Actor>();


        Actor[] actors = this.getChildren().begin();


        for (Actor actor : actors) {


            if (actor != null) {

                if (elements.isEmpty()) {


                    elements.add(actor);

                    size = actor.getWidth();


                } else if (size + space.getWidth() + actor.getWidth() <= this.getWidth()) {


                    elements.add(actor);

                    size += (space.getWidth() + actor.getWidth());


                } else {


                    rows.add(RowData.createNewRow(elements, size));


                    elements = new ArrayList<Actor>();

                    height += space.getHeight();


                    elements.add(actor);

                    size = actor.getWidth();

                }

            }

        }


        this.getChildren().end();


        rows.add(RowData.createLastRow(elements, size));


        height += space.getHeight();

        setHeight(height);


        float y = height;


        for (RowData data : rows) {


            float spacing = space.getWidth();

            if (data.lastRow == false) {

                spacing += ((getWidth() - data.size) / data.elements.size()); 

            }


            Actor element = data.elements.get(0);

            element.setPosition(0, y, Align.topLeft);


            float x = element.getWidth();


            for (int i = 1; i < data.elements.size(); i++) {


                element = data.elements.get(i);                

                element.setPosition(x + spacing, y, Align.topLeft);

                x += (spacing + element.getWidth());

            }


            y -= this.space.getHeight();

        }

    }


    @Override

    public float getPrefWidth () {

        return getWidth();

    }


    @Override

    public float getPrefHeight () {

        return getHeight();

    }

}



查看完整回答
反對 回復(fù) 2022-11-30
  • 1 回答
  • 0 關(guān)注
  • 163 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號