问题标签 [scene2d]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
184 浏览

android - 使用 Scene2d.ui 的 Libgdx UI - 它可以在 iOS 上运行吗?

我想主要使用 libgdx 为 Android 和 iOS 创建一个简单的游戏。

游戏将需要文本输入字段和按钮形式的 UI。

现在,有一个名为 Scene2d.ui 的包,它具有例如类 TextField。但是,它在 javadoc 中说(可能很旧,因为周围还有其他一些东西):

“目前有两种标准实现,一种用于桌面,一种用于 Android。”

这是否意味着(在当前版本中)没有标准(跨平台)libgdx 包用于执行涵盖 Android 和 iOS 以及桌面(以及所有内容)的 ui,因此我不必为每个平台制作一个 ui?

如果我使用 Scene2d 中的 ui,它不适用于 iOS 吗?

0 投票
2 回答
1137 浏览

java - libGDX MoveToAction nullPointerException

我已经开始了一个小项目来帮助我在 libGDX 中学习 scene2D 并不断遇到 nullPointerException。我的目标是让玩家通过使用和动作序列来跳跃。我的问题是玩家确实会跳起来,但一旦跌落下来,游戏就会崩溃。我已经包含了我认为导致问题的代码部分。由于我对 libGDX 和 scene2d 还很陌生,因此我不熟悉 setX() setY() 和可能导致问题的 setPosition(x,y) 方法之间的区别。

我还想进一步了解 delta 和 parentAlpha 到底是什么以及如何正确使用它们

我得到的错误

我的球员班的重要组成部分

至于我的 GameScreen 课程的重要部分,我有

我开始假设我错误地使用了我的渲染——这可能是正确的,因为我正在学习 5 个不同的教程——但是在单击堆栈跟踪中的 MoveToAction.java:26 错误后,它显示了第 26行文档(在 github 上),错误出现在“startX = actor.getX();”的行上 几天来我一直很困惑并尝试不同的事情,并且迫切希望找出我做错了什么。

非常感谢您的帮助

0 投票
1 回答
2638 浏览

java - libGDX TextButton 图像调整大小

在 libGDX 中,我有一个这样定义的 TextButtonStyle:

我的 TextButton 定义如下:

我将 TextButton 添加到这样的表中:

该表配置为:(我已经测试了有和没有这个配置,没有任何变化)

我遇到的问题是 TextButtonStyle 的纹理 style.up 和 style.down 调整为按钮的文本。例如,如果我将“t”写为文本,style.up 和 style.down 纹理将调整自己的大小以仅围绕“t”,而不是保持其原始图像大小。

在此处输入图像描述

在此图像中,不同长度的文本显示不同大小的按钮,尽管它们都是相同的纹理。此外,如您所见,文本的结尾不适合按钮内的期望,因为文本从一端延伸到另一端,从开头开始到结尾结束,当我真的希望它开始时在开始之后和结束之前结束。此外,文字位于图像的底部,看起来很尴尬。总的来说,整个事情看起来很尴尬,我想知道是否有办法解决这个问题。

我的想法是,由于我使用非常小的图像作为按钮纹理(类似于 34x11 像素),因此按钮总是会调整图像的大小。如果图像大于容纳文本所需的大小,则不会调整大小。但是,我使用的是像素主题按钮,最简单的方法是使用小图像,那么有没有办法绕过这个调整大小?

任何帮助将不胜感激。

0 投票
2 回答
605 浏览

java - Libgdx 像素化 GUI 效果

在 LibGDX 中,我目前正在尝试实现像素化 GUI 的效果,这意味着按钮是像素化的,就像 8 位主题一样。

当我制作我的 GUI 元素(例如 TextButton)时,我使用的是很小的图像,比如34x16像素,但我正在以较大的分辨率(例如1920x1080. 以高分辨率渲染如此小的图像的最佳方法是什么?

我的想法是使用stage.setViewport(WIDTH,HEIGHT),并将宽度和高度设置为按比例缩小的分辨率,这样 gui 元素就不会那么大。这可行,但是当添加元素时会出错。在此处输入图像描述

这是我目前的舞台/桌子,使用按比例缩小的分辨率。我正在使用这样的表添加小部件:

但正如您所看到的,这table.row()使得一行太大,也许一行适合更大的分辨率。有什么办法可以改变行造成的差距?我原以为差距会为零,通过使用table.add().pad()你可以改变差距,但我没有这样做。

任何帮助将不胜感激。

0 投票
1 回答
1747 浏览

java - LibGDX 内部按钮间距

我正在尝试在 libGDX 中创建一个 gui,但我的按钮有问题。我目前正在为我的按钮使用 9patch 图像,如下所示:在此处输入图像描述

这个按钮可以很好地缩放,只是当我向按钮添加文本时,按钮顶部和文本顶部之间的空间太大。像这样:在此处输入图像描述

红线标记了按钮顶部和文本顶部之间的空间量。这个空间太大了,不知道有什么办法可以缩小。

我使用的字体没有缩放,它是没有过滤器的普通 BitmapFont。无论比例如何,文本和顶部边缘之间的空间总是成比例的,这意味着当我使用小字体或大字体时,相对于文本大小,空间看起来仍然是相同的大小。

任何建议,将不胜感激。

0 投票
1 回答
883 浏览

java - LIBGDX:如何在混合 2D/3D 设置中拦截用户界面上的点击?

我正在使用 lwjgl 渲染游戏环境,同时使用 scene2d.UI 来构建一个包含我的输入的表。

目前,如果我点击 UI,它会做出反应,但游戏环境也会做出反应。显然是因为我没有处理它。这里的问题是 - 我应该在哪里处理输入,以便在 UI 上单击鼠标不会同时激活环境的输入处理。

我的想法是将监听器附加到 UI 表并将输入处理移动到监听器。我只是不知道如何设置。我应该在桌子上,在它的孩子上设置一个 ClickListener,还是我应该在这里做其他事情?

这是在渲染循环中运行的方法:

这就是我目前构建 UI 的方式:

0 投票
1 回答
364 浏览

android - 如何将动画(通过 getKeyFrame)添加到 scene2d 演员

我正在将 libgdx 和 scene2d 用于 android 游戏。我有一个带有演员的舞台,可以点击它来执行各种任务。演员目前是静态图像。我还有其他针对覆盖的代码

我想将演员更改为循环动画图像,同时将它们保持为可点击的演员。我怎样才能做到这一点?

0 投票
2 回答
647 浏览

opengl - 无法在桌面版 LibGDX 中绘制 TextButton 或 Button

我正在尝试在 LibGDX 中制作菜单。但是我无法在屏幕上绘制 Button 或 textButton 。我尝试使用测试皮肤。我试着用一张桌子。我尝试使用按钮和文本按钮。

图像很好,因为它可以在使用 SpriteBatch 绘制时出现,而且字体也很好用。

这是我的代码的一部分。

你有什么建议来完成这项工作吗?难道是因为GL3.0?

0 投票
1 回答
2578 浏览

java - stop or break an action in libGDX Scene2D

Is there any way that a can stop an action where it is before it is completed in libGDX Scene2D. I have an actor that is in the middle of a moveTo action but when i set a boolean gameOver to true I want the actor to stop where it is. How would I do that? It seems simple but I cant figure it out.

0 投票
1 回答
1324 浏览

libgdx - stage.draw() 不要触发 actor.draw()

在scene2d 中,stage.draw() 方法应该触发所有actor 的draw 方法,但在我的情况下,它甚至不会触发一个。这是我的代码:

设置:

渲染方法:

演员:

调整大小:

打印了actor构造函数中的调试字符串,但是actor的draw中的调试字符串不是打印机。我已经测试用batch.draw在渲染中绘制纹理,并且工作正常。但是演员永远不会渲染。