Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Libgdx:将两个演员一个接一个地放在一起_Java_Libgdx_Scene2d - Fatal编程技术网

Java Libgdx:将两个演员一个接一个地放在一起

Java Libgdx:将两个演员一个接一个地放在一起,java,libgdx,scene2d,Java,Libgdx,Scene2d,我使用libgdx的scene2d内置UI库在游戏中创建UI。我很感兴趣,我怎么能在一张桌子上画两个图像(或演员)?我正在寻找类似的安卓系统。有什么东西可以制作吗?libGDX用户界面库中有一个小部件用于这些目的 更新:如果要将一个小部件放在另一个小部件上,并且这些小部件的大小不同,则应包装较小的小部件。比如: //First add actual content stack.add(content); //Second add wrapped overlay object Table ove

我使用libgdx的scene2d内置UI库在游戏中创建UI。我很感兴趣,我怎么能在一张桌子上画两个图像(或演员)?我正在寻找类似的安卓系统。有什么东西可以制作吗?

libGDX用户界面库中有一个小部件用于这些目的

更新:如果要将一个小部件放在另一个小部件上,并且这些小部件的大小不同,则应包装较小的小部件。比如:

//First add actual content
stack.add(content);

//Second add wrapped overlay object
Table overlay = new Table();
overlay.add(overlayWidget).expand().fillX().bottom().left();
stack.add(overlay);
stack
变量是堆栈实例


这是我项目的真实摘录。你应该根据你的情况调整它

您可以使用以下内容:

    //create stage
    stage = new Stage(new StretchViewport(game.width, game.height));

    //create table
    Table table = new Table();
    table.setSize(game.width,game.height); //fullscreen

    //add Image 1
    table.add(new Image(game.skin.getDrawable("image1")));
    //add Image 2 (create new col)
    table.add(new Image(game.skin.getDrawable("image2"))).width(xx).height(xx);

    //add new row
    table.row();

    //add Image 3 - padding to draw over image1/2 && colspan
    table.add(new Image(game.skin.getDrawable("image3"))).width(xx).height(xx).padTop(-50f).colspan(2);

    //add table to stage
    stage.addActor(table);

    /*
     * Add action
     *
     */

    @Override
    public void render(float delta) {
        ...
        //don't forget to draw ur stage
        stage.act(delta); // or stage.act(Gdx.graphics.getDeltaTime())
        stage.draw();
    }
您还可以将动作添加到舞台/表格或图像等…:

   stage.addAction(Actions.sequence(
                           Actions.fadeOut(0.0001f),
                           Actions.fadeIn(0.5f),
                           Actions.delay(0.1f), 
                           Actions.run(new Runnable() {
                               @Override
                               public void run() {
                                   //mmmm new screen 
                                   dispose();
                                   game.setScreen(new BoobsScreen(game));
                               }
                           })));
当然,你们可以画更多的图片:按钮,文本按钮,标签等等,或者为表格添加滚动窗格,但在看之前 例如,通过编程实现的ninepatch文本按钮:

   private NinePatch processNinePatchFile(String fname) {
        final Texture t = new Texture(Gdx.files.internal(fname));
        final int width = t.getWidth() - 2;
        final int height = t.getHeight() - 2;
        return new NinePatch(new TextureRegion(t, 1, 1, width, height), 3, 3, 3, 3);
    }

    //create skin
    skin = new Skin();
    ...
    //create font
    ...
    //create ninepatch button from android/assets/style/button
    NinePatch ninepatch = processNinePatchFile("style/button.9.png");
    skin.add("button.9", ninepatch);

    //create textbuttonstyle
    TextButton.TextButtonStyle textButtonStyle = new TextButton.TextButtonStyle();
    textButtonStyle.font = skin.getFont("font_black_38");
    textButtonStyle.fontColor = Color.DARK_GRAY;
    textButtonStyle.up = skin.getDrawable("button.9");
    skin.add("buttonTextStyle", textButtonStyle);


    //now you can create textbutton
    TextButton btn = new TextButton("Hello", game.skin.get("buttonTextStyle", TextButton.TextButtonStyle.class));

    //add a clicklistener
    btn.addListener(new ClickListener(){
        @Override
        public void clicked(InputEvent event, float x, float y) {
            //mmmmmm add action for exemple
            stage.addAction(Actions.sequence(Actions.fadeOut(0.5f), Actions.run(new Runnable() {
                @Override
                public void run() {
                    //dispose and load screen
                    dispose();
                    game.setScreen(new MoreBoobsScreen(game));
                }
            })));
        }
    });
    table.add(btn);

要创建位图字体,请看一下,它非常易于使用。

感谢您的支持!我发现了这个小部件,但它似乎只是一个接一个地画了两个演员,而不可能改变孩子的大小。正如我所注意到的,它将所有子对象的大小调整为其中一个子对象的最大大小。让我解释一下我想做什么。我有两张照片。一个是正方形,第二个是圆形。正方形约为80x80像素,圆形约为20x20像素。我想在广场的右上方画画。我怎么能在堆栈小部件中放置这样的角色呢?我不知道在堆栈中为不同大小的小部件提供包装是如何工作的+1:)作为参考,您可以使用容器而不是表作为包装器