iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何解决Android Libgdx中ScrollPane和Actor事件冲突问题
  • 423
分享到

如何解决Android Libgdx中ScrollPane和Actor事件冲突问题

androidlibgdx 2023-05-30 20:05:20 423人浏览 八月长安
摘要

小编给大家分享一下如何解决Android Libgdx中ScrollPane和Actor事件冲突问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在Libgdx的

小编给大家分享一下如何解决Android Libgdx中ScrollPane和Actor事件冲突问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

在Libgdx的使用过程中,经常会用到ScrollPane这个widget,来实现滑动效果, 如下所示:

如何解决Android Libgdx中ScrollPane和Actor事件冲突问题

但是如果想在上面的效果上添加一点扩展,比如ScrollPane中的Actor可以从ScrollPane中移出来,并添加到Stage中,则需要添加额外的逻辑

具体代码参考如下:

public class TestAdapter extends ApplicationAdapter {  Stage stage;  ScrollPane scrollPane;  Table table;  private float lastStageX;  private float lastStageY;  ActorGestureListener actorGestureListener;  private InputListener inputListener = new InputListener() {    @Override    public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {      Log.e("DANNY", "actor touch down");      if (pointer == 0) {        lastStageX = event.getStageX();        lastStageY = event.getStageY();        inStage = false;      }      return true;    }    @Override    public void touchDragged(InputEvent event, float x, float y, int pointer) {      Log.e("DANNY", "actor touch dragging");      Actor actor = event.getListenerActor();      if (cancelTouchFocus) {        float currentX = event.getStageX();        float currentY = event.getStageY();        actor.moveBy(currentX - lastStageX, currentY - lastStageY);        lastStageX = currentX;        lastStageY = currentY;        if (!inStage) {          Vector2 vector2 = actor.localToStageCoordinates(new Vector2());          actor.setPosition(vector2.x, vector2.y);          stage.addActor(actor);          stage.cancelTouchFocusExcept(this, actor);          inStage = true;        }      }    }    @Override    public void touchUp(InputEvent event, float x, float y, int pointer, int button) {      Log.e("DANNY", "actor touch up");      cancelTouchFocus = false;    }  };  @Override  public void create() {    super.create();    stage = new Stage();    stage.setDebugAll(true);    Gdx.input.setInputProcessor(stage);    actorGestureListener = new ActorGestureListener() {      @Override      public boolean longPress(Actor actor, float x, float y) {        Log.e("DANNY", "actor gesture listener long pressed");        cancelTouchFocus = true;        return super.longPress(actor, x, y);      }    };    table = new Table();    scrollPane = new ScrollPane(table, new ScrollPane.ScrollPaneStyle());    scrollPane.setSize(stage.getWidth(), 500);    scrollPane.setScrollingDisabled(false, true);    scrollPane.setCancelTouchFocus(false);    scrollPane.setSmoothScrolling(true);    scrollPane.setFlingTime(0);    stage.addActor(scrollPane);    initTable();  }  private boolean cancelTouchFocus = false;  private boolean inStage = false;  private void initTable() {    for (int i = 0; i < 10; i++) {      BaseGdxActor actor = new BaseGdxActor(new TextureRegion(          new Texture("badlogic.jpg")));      table.add(actor).width(actor.getWidth()).pad(10);      actor.addListener(actorGestureListener);      actor.addListener(inputListener);    }  }  @Override  public void render() {    super.render();    Gdx.gl.glClearColor(1, 1, 1, 1);    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);    stage.act();    stage.draw();  }}

实现效果如下:

如何解决Android Libgdx中ScrollPane和Actor事件冲突问题

以上是“如何解决Android Libgdx中ScrollPane和Actor事件冲突问题”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: 如何解决Android Libgdx中ScrollPane和Actor事件冲突问题

本文链接: https://www.lsjlt.com/news/221219.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何解决Android Libgdx中ScrollPane和Actor事件冲突问题
    小编给大家分享一下如何解决Android Libgdx中ScrollPane和Actor事件冲突问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在Libgdx的...
    99+
    2023-05-30
    android libgdx
  • Android中Libgdx如何使用ShapeRenderer自定义Actor解决无法接收到Touch事件的问题
    这篇文章给大家分享的是有关Android中Libgdx如何使用ShapeRenderer自定义Actor解决无法接收到Touch事件的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在项目中实现了一个效果,主要...
    99+
    2023-05-30
    android libgdx
  • android事件冲突如何解决
    在Android开发中,事件冲突通常发生在多个View之间,例如一个ViewGroup包含了多个子View,当用户触摸操作时,可能会...
    99+
    2023-08-15
    android
  • 如何解决JS中touchstart事件与click事件冲突的问题
    这篇文章主要介绍了如何解决JS中touchstart事件与click事件冲突的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言移动互联...
    99+
    2022-10-19
  • Vue中keyup.enter和blur事件冲突的问题及解决
    目录keyup.enter和blur事件冲突问题解决方法keyup.enter和blur同时触发如何规避问题描述实现代码解决办法keyup.enter和blur事件冲突问题 ...
    99+
    2022-11-13
    Vue中keyup.enter事件 Vue中blur事件 keyup.enter和blur冲突
  • Android事件冲突怎么解决悬浮窗拖拽问题
    本文小编为大家详细介绍“Android事件冲突怎么解决悬浮窗拖拽问题”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android事件冲突怎么解决悬浮窗拖拽问题”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。需求场...
    99+
    2023-07-05
  • 如何解决JS中双击和单击事件冲突的问题
    这篇文章主要为大家展示了“如何解决JS中双击和单击事件冲突的问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决JS中双击和单击事件冲突的问题”这篇文章吧...
    99+
    2022-10-19
  • 移动端touch拖动和click事件冲突问题解决
    目录实现效果准备实现问题分析解决通过一个悬浮球交互功能的案例来阐述问题,以及解决办法。 实现效果 类似微信里的悬浮窗效果,苹果手机的悬浮球功能效果 可以点击拖动,然后吸附在窗口边缘点...
    99+
    2022-11-13
  • Android应用中ViewPager出现事件冲突如何解决
    这期内容当中小编将会给大家带来有关Android应用中ViewPager出现事件冲突如何解决,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Android ViewPager的事件冲突的解决办法@Overr...
    99+
    2023-05-31
    android viewpager age
  • VSCode中Eslint和Prettier冲突问题如何解决
    这篇文章主要讲解了“VSCode中Eslint和Prettier冲突问题如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“VSCode中Eslint和Prettier冲突问题如何解决”吧...
    99+
    2023-07-05
  • 如何解决Vue.js和layui日期控件冲突的问题
    这篇文章主要介绍如何解决Vue.js和layui日期控件冲突的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!事故还原:在用layui的日期控件的时候发现一个问题,就是form表单...
    99+
    2022-10-19
  • 如何解决layui中form表单与button的点击事件冲突问题
    这篇文章给大家分享的是有关如何解决layui中form表单与button的点击事件冲突问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。layui的form表单位置和button...
    99+
    2022-10-19
  • Android应用的中滑动事件出现冲突如何解决
    Android应用的中滑动事件出现冲突如何解决?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。外部拦截法外部拦截法是指在有点击事件时都要经过父容器,那么在父容器时如果需要拦截...
    99+
    2023-05-31
    android roi
  • Android使用NestedScrollView内嵌RecycleView滑动冲突问题如何解决
    这篇“Android使用NestedScrollView内嵌RecycleView滑动冲突问题如何解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,...
    99+
    2023-07-02
  • 如何解决sass-loader和node-sass版本冲突的问题
    目录报错信息1报错信息2解决办法网上解决方法我的解决方案太难了,两天没有学习了,这个问题卡了很久,差点就放弃了,今天终于解决了,继续学习Vue! 报错信息1 ERROR  ...
    99+
    2022-11-13
  • 如何解决Hbase、elasticsearch整合中jar包冲突的问题
    这篇文章主要介绍了如何解决Hbase、elasticsearch整合中jar包冲突的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。问题背景再数据平台中,项目搭建需要使用e...
    99+
    2023-05-30
    hbase elasticsearch jar
  • ASP 重定向接口和 Laravel 的冲突问题,如何解决?
    在开发 Web 应用程序时,经常需要使用重定向接口来实现页面跳转和请求转发。ASP 是一种非常常见的 Web 应用程序框架,而 Laravel 是一种基于 PHP 的现代化 Web 应用程序框架。然而,在使用 ASP 重定向接口和 Lar...
    99+
    2023-06-23
    重定向 接口 laravel
  • 如何解决Android 沉浸式状态栏和华为虚拟按键冲突问题
    这篇文章主要介绍如何解决Android 沉浸式状态栏和华为虚拟按键冲突问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!先看下实现的效果图:这是我自己的手机,OnePlus 3T 7.1.1版本(免费广告,没给我钱的...
    99+
    2023-05-30
    android
  • Android如何解决游戏发行切包资源索引冲突的问题
    本篇内容介绍了“Android如何解决游戏发行切包资源索引冲突的问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!背景游戏发行切包过程中,经...
    99+
    2023-06-14
  • 如何解决Go语言中的并发内存访问冲突问题?
    如何解决Go语言中的并发内存访问冲突问题?在Go语言中,我们可以使用goroutine来实现并发编程,这无疑给我们带来了更强大的性能和并行处理能力。然而,并发编程也会引发一些问题,其中最常见的就是内存访问冲突。内存访问冲突问题是指多个gor...
    99+
    2023-10-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作