- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有 OrthographicCamera 的舞台,还有一个带有 addListener setter (来自 actor 类)的 InputListener 的 Actor。问题是 actor 不处理输入,但如果在我的屏幕中删除 OrthographicCamera,Actor 会处理输入,因此,使用 OrthographicCamera Actor 不会处理输入,但如果我删除 OrthographicCamera,它会起作用。
有什么建议吗?
我有以下代码
public class Test implements Screen {
private Game game;
private Stage stage;
private MemoryActor actor;
private AssetManager manager;
private boolean loaded = false;
float width, height;
private OrthographicCamera camera;
public Test(Game game){
this.game = game;
stage = new Stage();
manager = new AssetManager();
manager.load("img.png",Texture.class);
manager.load("img1.png",Texture.class);
InputMultiplexer im = new InputMultiplexer();
im.addProcessor(stage);
Gdx.input.setInputProcessor(im);
height = Gdx.graphics.getHeight();
width = Gdx.graphics.getWidth();
camera = new OrthographicCamera(width, height);
camera.position.set(((width / 2)), ((height / 2)), 0);
camera.update();
stage.setViewport(new ExtendViewport(300,300, camera));
}
public void createActor(){
Texture back = manager.get("img.png", Texture.class);
actor = new MemoryActor(manager.get("img1.png", Texture.class), back,0,0,50,50);
actor.setInputListener(new InputListener(){
@Override
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
System.out.println("down");
return true;
}
@Override
public void touchUp(InputEvent event, float x, float y, int pointer, int button) {
System.out.println("up");
}
});
stage.addActor(actor);
}
@Override
public void render(float delta) {
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
if (manager.update()){
if (!loaded){
createActor();
loaded = true;
}
}
stage.draw();
}
@Override
public void resize(int width, int height) {
}
@Override
public void show() {
}
@Override
public void hide() {
}
@Override
public void pause() {
}
@Override
public void resume() {
}
@Override
public void dispose() {
}
}
和 MemoryActor:
public class MemoryActor extends Actor {
...
public MemoryActor(){}
public MemoryActor(Texture texture, Texture texBack, float x, float y, float width, float height){
...
}
public void setInputListener(InputListener il){
addListener(il);
}
@Override
public void draw(Batch batch, float alpha){
...
}
}
最佳答案
仅将舞台注册为 InputProcessor
是不够的。还需要在每一帧通过stage.act()
触发Stage
的事件处理。
此外,您需要在发生调整大小事件时正确更新舞台的 Viewport
。这可以通过 stage.getViewport().update(width, height, true)
完成。否则,舞台将根据对屏幕尺寸的错误假设来处理事件,并且还可能以您不希望的方式渲染您的舞台。 true
很重要,因为它还会将相机置于新屏幕尺寸的中心,这在 UI 的情况下是必需的。
关于java - InputListener 不适用于 OrthographicCamera 和 Actors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27776440/
我编写了以下代码: public void show () { skin = new Skin (Gdx.files.internal("PlayButton.json")); but
我正在使用 LIBGDX 构建一个简单的游戏,我遇到了这个恼人的问题。 我有一个 MenuScreen.java 类,它看起来像这样: Here是 pastebin 上的完整类(class) 重要的部
我正在使用MouseOverArea制作一个按钮。经过一番尝试和错误后,我意识到我可以重写 InputListener 中的方法,以便在收到输入事件通知时执行特定操作。 例如,当光标位于组件上方时按下
我用 libgdx 写了一个游戏。一切正常,除了一件事: 当玩家失败时,屏幕上会显示“游戏结束”纹理。我想为游戏添加一个“点击屏幕重新启动”功能,但为此,我需要将一个 eventListener 附加
哦,好吧...我遇到了一个问题,我不知道出了什么问题。 我有一个舞台, table 内有一些瓷砖(128x128 大小的方形 Actor )。 我想要做的是,当我向上滚动时,相机缩小,当我向下滚动时,
我已经尝试在 Actor 上使用 InputListener,但似乎没有调用 touchUp。其他所有方法都对我有用。 stage = new Stage(new ScreenViewport());
我将下表按钮放入 MenuScreen.java 文件中以制作“开始游戏”按钮: // register the button "start game" TextButton star
我尝试将 InputListener 与 Actor 一起使用,但它不起作用。我真的不知道为什么。我找到了很多关于它的信息并查看了官方文档,但没有一个对我没有帮助。 当我触摸 sprite 时,我的日
我有一个 Actor ,我想通过触摸拖动来移动它。 class Tile extends Actor { Tile (char c) { addListener(new Inp
我有一个带有 OrthographicCamera 的舞台,还有一个带有 addListener setter (来自 actor 类)的 InputListener 的 Actor。问题是 acto
我能够绘制我的按钮,但是当我点击/“触摸”它们时没有任何反应,而且我不知道我做错了什么。有人可以帮忙吗?触摸时,textButtonStyle 不应该更改为“ToothButton”吗?我不应该为 A
我是 libgdx 的新手,我在这里想要实现的是我希望我的 GestureDetector 与 InputListener 同时工作。我的左边有两个按钮,即使我同时开始滑动(多点触控),我也需要它们保
我正在使用 Xith3d 在 java 中启动一个 3d 游戏项目。它使用 jagatoo 进行输入,并且我已正确设置所有内容。这是我的测试代码: import org.jagatoo.input.I
我想使用 InputListener 中的 exit() 方法来查看光标是否在按钮内。 这是 libGDX 文档中的解释。 public void exit(InputEvent event, flo
我正在尝试使用 Libgdx Scene2dui 库并希望捕获鼠标触地事件。我有一个自定义 Actor 和一个实例化 Actor 实例并尝试监听触摸事件的对话框。由于某种原因,触摸事件没有被捕获。 p
我是一名优秀的程序员,十分优秀!