无法让事件在我的 libgdx Actor 中工作

Posted

技术标签:

【中文标题】无法让事件在我的 libgdx Actor 中工作【英文标题】:Cannot get events working in my libgdx Actor 【发布时间】:2012-09-11 07:26:13 【问题描述】:

我很难在 libgdx 中使用我的 Actor 处理事件。我正在使用每晚构建。

我的舞台设置在Screen 子类的show() 方法中:

stage = new Stage(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), true);
Gdx.input.setInputProcessor(stage);  
TestActor actor = new TestActor(); 
stage.addActor(actor);

我的演员类看起来像:

class TestActor extends Actor 
    private Sprite sprite;
    private TextureAtlas atlas; 

    public TestActor()    
        atlas = new TextureAtlas(Gdx.files.internal("textures/images-packed.atlas"));
        sprite = atlas.createSprite("logo-96");

        setTouchable(Touchable.enabled);
        addListener(new InputListener() 
            public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) 
                Gdx.app.debug(TestGame.TAG, "TestActor.touchDown()");
                return true;  // must return true for touchUp event to occur
            
            public void touchUp (InputEvent event, float x, float y, int pointer, int button) 
                Gdx.app.debug(TestGame.TAG, "TestActor.touchUp()");
            
        );
    

    @Override
    public void draw(SpriteBatch batch, float parentAlpha) 
        Color color = getColor();
        batch.setColor(color.r, color.g, color.b, color.a * parentAlpha);
        batch.draw(sprite, getX(), getY());
                

事件似乎没有触发。奇怪的是,我使用了像 TextButton 这样的内置 UI 小部件,并且可以很好地触发这些事件。谁能看到我做错了什么?

【问题讨论】:

【参考方案1】:

您还应该为您的演员设置边界。 最好的方法(如果你想要与纹理相同的大小) 将这些行添加到您的构造函数中:

setWidth(sprite.getWidth());
setHeight(sprite.getHeight());
setBounds(0, 0, getWidth(), getHeight());

请注意,您还可以使用前 2 个参数设置边界的位置。

【讨论】:

是的!谢谢!我想知道它是否有类似的东西。

以上是关于无法让事件在我的 libgdx Actor 中工作的主要内容,如果未能解决你的问题,请参考以下文章

努力让我的休息时间在我的番茄钟中工作

如何让 splice() 方法在我的待办事项列表中工作?

如何使 ProgressBar 在 LibGDX 中工作?

无法让它在 Joomla 3.4+ 中工作

Rotativa 在本地主机中工作,但在我的 Azure Web 应用程序中无法工作 - 2021

无法让 Angular 控制器在 MVC 布局中工作