【问题标题】:LibGDX - Scene2D panningLibGDX - Scene2D 平移
【发布时间】:2015-12-24 05:34:24
【问题描述】:

我最近一直在做一个项目,为了我的家庭作业。
好吧,说到重点,我有一个 Scene2D 的 Screen 实现,我遇到的问题是我在小部件上的触摸事件不会在小部件上停止。
我的意思是,如果我弹出一个窗口,并且尝试移动它,它也会触发我的图形上的平移,或者如果我移动滑块,它也会平移相机。

这里是my project on GitHub
我的事件是在核心的 Pantalla 类上配置的,Here
提前致谢。

【问题讨论】:

    标签: java libgdx scene2d panning


    【解决方案1】:

    您的问题是您正在使用带有所有演员(小部件等)的舞台作为相机手势动作的输入处理器。这意味着每当您对属于它的任何演员应用某种手势时,它都会触发。

    解决方案是为当前阶段的相机手势创建另一个阶段。所以你的代码应该是这样的:

        //show method
        viewport = new FitViewport(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
        // Creamos el stage, el cual albergara los botones entre otras cosas
        stage = new Stage(viewport);
    
        cameraStage = new Stage(viewport); //I'm not super-sure if you can user viewport second time - if not create new one
    
        ...
    
        //render method
        stage.act();
        stage.draw(); 
    
        cameraStage.act();
        cameraStage.draw(); //cameraStage is drawn after stage so it will be over it!
    
        ...
    

    然后您应该将所有与相机手势相关的侦听器添加到 cameraStage 而不是舞台但它的功能当然应该影响静止演员舞台

    好的,那么您有两个阶段,摄影机阶段在演员的舞台上方,因此您可以随意触摸任何地方,并且您确定您正在触摸两个阶段,您现在要做的就是将两个阶段都设置为输入处理器演员舞台为第一,相机舞台为第二,您将确保演员舞台的事件首先进行。

    您需要InputMultiplexer 来执行此操作。代码的主要方案是:

        InputMultiplexer inputMultiplexer = new InputMultiplexer();
    
        inputMultiplexer.addProcessor(stage);
        inputMultiplexer.addProcessor(cameraStage);
    
        Gdx.input.setInputProcessor(inputMultiplexer);
    

    现在您的小部件事件将作为第一个处理。

    如果某些东西不起作用,还可以考虑在触碰舞台时从 inputMultiplexer 中删除 cameraStage,并在触碰时再次添加它。


    还有一个简单的建议 - 特别是当您创建一个将在未来共享的工具时,在代码中使用英文变量/方法/等名称 - 其他用户会更清楚

    【讨论】:

    • 是的,对西班牙语的事情感到抱歉,只是目前这是一个团队任务,他们的英语处理得不太好(或根本没有)。但是感谢您的建议,我将添加英语 cmets 和其他内容。好吧,让我试试
    • 嗯,成功了!!谢谢老兄,也是的,我可以为相机和 gui 使用相同的视口,我的意思是,也许我会为 GUI 做另一个,因为当我在 Android 上运行应用程序时,按钮太小了。再次感谢!跨度>
    猜你喜欢
    • 1970-01-01
    • 2015-06-24
    • 2015-10-22
    • 2016-05-28
    • 2013-09-28
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多