标签: scene2d

Scene2d 如何处理被触摸的演员?(LibGDX)

我在 libgdx 中使用 scene2d 时遇到问题。我找不到任何可以让我检查演员是否被触摸的方法。我只能找到告诉我演员是被触摸还是被释放的方法。在我的游戏中,当演员被按住时,每帧都应该做一些事情,而不仅仅是在我手指上的那一刻。当我松开手指时,我想停止这些事情。

android libgdx scene2d

5
推荐指数
1
解决办法
5765
查看次数

在libgdx中按名称获取一个actor

如何在libgdx中按名称获取actor?

我目前有以下ChangeListener:

    ChangeListener colorPickerListener = new ChangeListener()
    {
        public void changed(ChangeEvent event, Actor actor)
        {
            //Popup Window
            toolboxStage.addActor(blockWindow);
            //toolboxStage.getRoot().removeActor(blockWindow);
            Gdx.app.log("LevelEditorScreen", "Color Picker Selected");
            Gdx.app.log("LevelEditorScreen", "HUD Width: " + HUD_WIDTH);

            Gdx.input.setInputProcessor(toolboxStage);
        }
    };
Run Code Online (Sandbox Code Playgroud)

上面的演员是被触摸的演员.一旦触及这个特定的演员,我需要改变另一个演员的颜色.我究竟该如何以名字命名这位演员?

java android libgdx scene2d

5
推荐指数
2
解决办法
3561
查看次数

LibGDX scene2D - swapActor可以用来改变表中的位置吗?

我想交换libGDX表中两个标签的位置.我以为我可以使用swapActors来做到这一点,但它没有做到这一点.

private Stage stage;
private Table table;

public MainScreen() {

    stage = new Stage(new FitViewport(800, 480));
    table = new Table(SkinManagerImpl.getDefaultSkin());
    table.add("A").center();
    table.add("B").center();
    table.setFillParent(true);
    boolean succes=table.swapActor(0, 1);
    Gdx.app.log("", "success:"+succes);
    table.layout();
    stage.addActor(table);
}

@Override
    public void render(float delta) {
        // TODO Auto-generated method stub
        super.render(delta);
        stage.draw();
    }
Run Code Online (Sandbox Code Playgroud)

成功是真的,但它仍然说"AB"而不是"BA".

是否有另一种简单的方法可以在表格内交换两个单元格或演员(意味着交换位置)?

libgdx scene2d

5
推荐指数
1
解决办法
1435
查看次数

使用libgdx缩放scene2d按钮

我不知道这是不是我,但是画画让我很困惑.他们是打算保持给定的尺寸,还是有办法在其中放大图像?我知道他们可以使用ninepatch通过拉伸图像来填充某些区域,但我想缩放它伸展的图像.我使用TextButton 作为我的菜单按钮,但它们太大了,我很想知道如何缩放它们.我正在从一张地图集中检索皮肤,其中有九个图像.这是设置屏幕: 设置屏幕 以下是我正在使用的包中的图像: 九张图片包装好 这是TextureAtlas和Skin的初始化:

buttonAtlas = new TextureAtlas(Gdx.files.internal("buttons/buttons.pack"));
buttonSkin = new Skin(buttonAtlas); 
Run Code Online (Sandbox Code Playgroud)

这是菜单按钮的初始化.

TextButtonStyle textButtonStyle = new TextButtonStyle();
textButtonStyle.up = Assets.buttonSkin.getDrawable("bluebutton");
textButtonStyle.down = Assets.buttonSkin.getDrawable("redbutton");
textButtonStyle.font = font;

buttonMenu = new TextButton("Menu", textButtonStyle);
buttonMenu.pad(20.0f);
buttonMenu.addListener(new ClickListener() {
    @Override
    public void clicked(InputEvent event, float x, float y) {
        game.fade.startFadeOut();
        super.clicked(event, x, y);
    }
});
Run Code Online (Sandbox Code Playgroud)

也许我可以改变我把它放在桌子上的方式,或者我如何把桌子放在舞台上?

table.add(buttonMenu).width(Gdx.graphics.getWidth()/4);
stage.addActor(table);
Run Code Online (Sandbox Code Playgroud)

作为最后的手段,我想我可以尝试创建自己的文本按钮演员,我可以缩放,谢谢你的时间.

scaling android button libgdx scene2d

5
推荐指数
1
解决办法
6443
查看次数

LibGDX如何实现场景2D菜单选项卡?

我已经制作了我的RPG的alpha版本,现在我想实现一个带有多个标签的菜单.当你在游戏中并按下tab或escape时,我想显示一个用户界面,它将有一个带有3个按钮的条形顶部,如主菜单,技能树和库存.问题是当你切换标签时,我需要停止绘制之前选择的标签并从中禁用演员,这样当您从当前标签中点击某些内容时,它也不会单击未绘制的标签上的按钮但是它就在那里......我如何禁用演员,按钮以便我可以绘制一个新标签而不必担心当前标签与前一个标签重叠?

编辑:我想避免做多个阶段.我想有一个阶段,每个选项卡都定义在其上.

java libgdx scene2d

5
推荐指数
1
解决办法
4658
查看次数

以编程方式执行单击Actor libgdx

我的问题很简单.

我有一些ClickListeners添加到一个演员.我想以编程方式对它们执行click事件.

喜欢的东西myActor.performClick();

libgdx scene2d

5
推荐指数
2
解决办法
1842
查看次数

libGDX 阶段输入处理

我有一个Stage处理触摸输入的类。

Screen课堂上,我将其设置stageInputProcessor

stageTest = new StageTest(new ScreenViewport());
Gdx.input.setInputProcessor(stageHUD);
Run Code Online (Sandbox Code Playgroud)

但是现在我想向 Box2d 对象添加一个力,总是会发生手势输入。

public class ActSwipe extends Actor {

    private int tmpPointer;
    private float
            tmpX,
            tmpY,
            deltaX,
            deltaY,
            rad;
    protected float
            forceX,
            forceY;


    public ActSwipe() {
        this.setName("SwipeAction");
        this.setTouchable(Touchable.enabled);
        this.addListener(new InputListener() {
            @Override
            public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
                if(tmpPointer == 0) {
                    tmpPointer = pointer;
                    tmpX = x;
                    tmpY = y;
                }
                return true;
            }

            @Override
            public …
Run Code Online (Sandbox Code Playgroud)

java box2d libgdx scene2d

5
推荐指数
1
解决办法
3686
查看次数

无法循环操作.libGDX

我问过4天前的问题.得到了一些帮助,现在我的代码看起来像

ColorAction actionBtG = new ColorAction();
ColorAction actionGtB = new ColorAction();
SequenceAction sequenceAction;
RepeatAction repeatAction = new RepeatAction();
ShapeRenderer shapeRenderer;
Color blue = new Color(Color.BLUE);

@Override
public void create () {

    shapeRenderer = new ShapeRenderer();
    actionBtG.setColor(blue);
    actionBtG.setEndColor(Color.GOLD);
    actionBtG.setDuration(5);

    actionGtB.setColor(blue);
    actionGtB.setEndColor(Color.BLUE);
    actionGtB.setDuration(5);
    sequenceAction = new sequenceAction(actionBtG,actionGtB);






    repeatAction = new RepeatAction():        
    repeatAction.setAction(sequenceAction);
    repeatAction.setCount(RepeatAction.FOREVER);
}

@Override
public void render () {

    repeatAction.act(Gdx.graphics.getDeltaTime());
    Gdx.gl.glClearColor(1,1,1,1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
    shapeRenderer.setColor(blue);
    shapeRenderer.rect(100, 100, 40, 40);
    shapeRenderer.end();


}
Run Code Online (Sandbox Code Playgroud)

但它仍然有效.它会动作一次并停止.当我需要循环时.从蓝色到金色,然后从金色到蓝色.我真的很感激任何帮助,因为我只是在学习libGDX.谢谢.

我已经阅读了所有答案并编辑了我的代码,但它仍然无效:

private Actor actionManager = new Actor();
ColorAction actionBtG = …
Run Code Online (Sandbox Code Playgroud)

java android libgdx scene2d

5
推荐指数
1
解决办法
1229
查看次数

Libgdx | Scene2d | 设置表的背景颜色?

我正在创建一个菜单(就像那个飞扬的小鸟,当你死的时候会弹出播放屏幕).我创建了一个扩展表的类,我想将表的背景设置为白色.有没有办法做到这一点?

java android box2d libgdx scene2d

5
推荐指数
3
解决办法
3462
查看次数

LibGDX Scene2D:对于组内的actor,动作根本不起作用

我试图使用Action FadeOut消除一个Actor.但是,我发现没有任何动作对我的对象起作用.我的类的层次结构如下:

Actor -> MoveableObject -> Knight

Stage -> KnightGroup (Group) -> Knight
Run Code Online (Sandbox Code Playgroud)

我的骑士演员的动作根本不起作用.但是,我的KnightGroup小组的操作有效.这是我的骑士的代码:

public class Knight extends Players {
public Knight() {
    setWidth(96);
    setHeight(96);
    setPosition(100, 90);

    //Doesn't work
    AlphaAction action = new AlphaAction();
    action.setAlpha(0f);
    action.setDuration(1f);
    addAction(action);

    //Doesn't work
    addAction(fadeOut(1f));
    addAction(Actions.scaleBy(1f, 1f));
}

@Override
public void act(float delta){
    super.act(delta);
}


@Override
public void draw(Batch batch, float parentAlpha) {
    batch.setColor(getColor().r, getColor().g, getColor().b, getColor().a);
    batch.draw(animation[currentState], getX(), getY(), getWidth(), getHeight());
}
}
Run Code Online (Sandbox Code Playgroud)

我不能为我的生活找出问题所在.在行动MoveableObject(骑士的母公司)也不起作用.我最好的猜测是,在包装的演员Grouprenderactions这些演员无效.这KnightGroup是我的代码中非常重要的一部分,我不得不做很多重构才能把它拿出来.别人可以对这个问题有所了解吗?

action actor libgdx scene2d

4
推荐指数
1
解决办法
2174
查看次数

标签 统计

libgdx ×10

scene2d ×10

android ×5

java ×5

box2d ×2

action ×1

actor ×1

button ×1

scaling ×1