RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题

问题[libgdx]

Martin Hope
whitegold
Asked: 2022-04-12 19:11:02 +0000 UTC

addListener 在 libGDX 中不起作用

  • 0

我正在制作一个应用程序,我想添加ImageButton按钮。我不明白为什么我的addListener()不起作用,即使按钮

  1. 初始化
  2. 添加到场景中
  3. 正确渲染

在MainGameScreen类的构造函数中,实例化setInputProcessor并将其设置为当前场景:

_viewport = new ScreenViewport();
_stage = new Stage();
iniatilizeButtons();
Gdx.input.setInputProcessor(_stage);

iniatilizeButtons ()函数描述了按钮的样式,按钮立即添加到场景中并定义了addListener():

buttonTextureAtlas = new TextureAtlas("ui/joystick/joystick.atlas");

skin = new Skin();
skin.addRegions(buttonTextureAtlas);

buttonRightStyle = new ImageButton.ImageButtonStyle();
buttonRightStyle.down = skin.getDrawable("touchBackground");
buttonRightStyle.up = skin.getDrawable("touchKnob");
buttonRightStyle.checked = skin.getDrawable("touchKnob");

buttonRight = new ImageButton(buttonRightStyle);
buttonRight.setPosition(20, 20);
buttonRight.setTransform(true);
buttonRight.setScale(0.001f*Gdx.graphics.getHeight());

_stage.addActor(buttonRight);

buttonRight.addListener(new ClickListener(){
    @Override
    public void touchUp(InputEvent event, float x, float y, int pointer, int button) {
        super.touchUp(event, x, y, pointer, button);
        Gdx.app.log(TAG, "Button Pressed");
        hide();
    }
});

当调用render()我这样做:

_stage.act(delta);
_stage.draw();

稍微清楚一点,按下按钮并释放它不会输出我在 touchUp() 中指定的“按下按钮”。我已经添加了 touchDown() 和 clicked(),但它们在单击时也不显示任何内容。

libgdx
  • 1 个回答
  • 10 Views
Martin Hope
Алексей Ефимов
Asked: 2020-01-14 18:36:25 +0000 UTC

LIBGDX 中的 CatmullRomSpline 方法

  • 0

我正在尝试使用样条曲线,我想自己解决在 github 上阅读本指南后出现的问题。这是我设法从该指南中收集的代码:

public class MyCatmullRomSpline {

private int mCountSections; //кол-во делений(точек) между основными точками указанными в dataPoints
private Vector2[] mSections; //массив делений
private ShapeRenderer mShapeRenderer;
private CatmullRomSpline<Vector2> mSpline;
private Vector2 out; 
private float speed; //скорость перемещения чего-либо по кривой


public GCatmullRomSpline(Vector2[] dataPoints, boolean closed, int countSections){

    speed = dataPoints.length - 1;

    mSpline = new CatmullRomSpline<Vector2>(dataPoints, closed);
    mSections = new Vector2[countSections];

    mCountSections = countSections;

    mShapeRenderer  = new ShapeRenderer();

    initSpline();
}

private void initSpline(){
    out = new Vector2();

    mSpline.valueAt(out, Gdx.graphics.getDeltaTime()); //?????
    mSpline.derivativeAt(out, Gdx.graphics.getDeltaTime()); //?????

    for (int i = 0; i < mCountSections; ++i){
        mSections[i] = new Vector2();
        mSpline.valueAt(mSections[i], ((float)i)/((float)mCountSections-1));//?????
    }
}

float current = 0;

public void render(SpriteBatch batch, Texture texture){
    mShapeRenderer.begin(ShapeRenderer.ShapeType.Line);

    float derivativeAverage = 0;
    for (float i = 0; i < 1; i += 1f/mCountSections) {
        mSpline.derivativeAt(out, i); //?????
        derivativeAverage += out.len();
    }
    derivativeAverage /= mCountSections;

    mSpline.derivativeAt(out, current);
    current += derivativeAverage / speed * Gdx.graphics.getDeltaTime() / out.len();
    current %= 1;

    if (current >= 1) current -= 1;
    mSpline.valueAt(out, current);

    batch.begin();
    batch.draw(texture, out.x - 18, out.y - 18, 36, 36);
    batch.end();


    for (int i = 0; i < mCountSections-1; ++i){
        mShapeRenderer.line(
                mSpline.valueAt(mSections[i], ((float)i)/((float)mCountSections-1)),
                mSpline.valueAt(mSections[i+1], ((float)(i+1))/((float)mCountSections-1)));
    }

    mShapeRenderer.end();
    }
}

这是我理解的图像: MyCatmullRom样条

问题一:

方法: mSpline.valueAt(out, Gdx.graphics.getDeltaTime()); 和 mSpline.derivativeAt(out, Gdx.graphics.getDeltaTime()); - 包含相同的正文和语法。

public T valueAt (T out, float t) {
    final int n = spanCount;
    float u = t * n;
    int i = (t >= 1f) ? (n - 1) : (int)u;
    u -= i;
    return valueAt(out, i, u);
}

public T derivativeAt (T out, float t) {
    final int n = spanCount;
    float u = t * n;
    int i = (t >= 1f) ? (n - 1) : (int)u;
    u -= i;
    return derivativeAt(out, i, u);
}

他们有什么区别?

PS:我的微分数学很弱。

libgdx
  • 1 个回答
  • 10 Views
Martin Hope
Alexander
Asked: 2020-09-02 22:50:42 +0000 UTC

Actor 中的 libGdx 访问变量

  • 1

如何从外部访问 actor 中的 moveX、moveY 变量?

在此处输入图像描述

libgdx
  • 2 个回答
  • 10 Views
Martin Hope
Vyacheslav Mikhailov
Asked: 2020-01-11 20:33:47 +0000 UTC

通过表格单击按钮

  • 1

我在组中创建一个按钮

menubutton = new Button(style);
    menubutton.setPosition(topbar.getX() + 910, topbar.getY() + 22);
    menubutton.setBounds(menubutton.getX(), menubutton.getY(), menubutton.getWidth(), menubutton.getPrefHeight());
    menubutton.addListener(new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            Gdx.app.log("Log", "Test");
        }
    });
    this.addActor(menubutton);

然后我在那里创建一个表

table = new Table();
    table.setSize(1100, 600);
    table.setBackground(new TextureRegionDrawable(new TextureRegion(new Texture(Gdx.files.internal("bkgd.png")))));
    table.setPosition(90, 60);

    this.addActor(table);

表格与按钮重叠,但是在按钮所在位置的表格区域中点击,clicked事件触发

libgdx
  • 1 个回答
  • 10 Views
Martin Hope
Fotomizer
Asked: 2020-01-16 20:30:08 +0000 UTC

如何获取 LIBGDX 表中可见行的范围

  • 1

问候!在 libgdx 表中,我正在交换来自服务器的照片。我实现了从上到下的加载,但我只想优化和加载用户滚动屏幕上可见的那部分行。我可以使用 libgdx 以某种方式获得这个范围,还是我需要发明一些东西?

libgdx
  • 2 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5