详解 Android中Libgdx使用ShapeRenderer自定义Actor解决无法接收到Touch事件的问题

今天在项目中实现了一个效果,主要是画一个圆。为了后续使用方便,将这个圆封装在一个自定义Actor(CircleActot)中,后续想显示一个圆的时候,只要创建一个CircleActor中即可。 部分代码如下所示:
package com.ef.smallstar.unitmap.widget;
import android.content.res.Resources;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.Batch;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.ef.smallstar.EFApplication;
import com.ef.smallstar.R;
/**
* Created by ext.danny.jiang on 17/4/17.
*
* A Widget currently used in the UnitMap, shown as a CIRCLE shape
* if text not null, there would be a text drawn in the center of the circle
*/
public class CircleActor extends Actor {
private float centerX;
private float centerY;
private String text;
private float radius;
private ShapeRenderer sr;
private BitmapFont bitmapFont;
public CircleActor(float x, float y, float radius) {
this(x, y, radius, null);
}
public CircleActor(float x, float y, float radius, String text) {
this.centerX = x;
this.centerY = y;
this.radius = radius;
this.text = text;
sr = new ShapeRenderer();
}
@Override
public void act(float delta) {
super.act(delta);
}
@Override
public void draw(Batch batch, float parentAlpha) {
...
batch.end();
sr.setProjectionMatrix(batch.getProjectionMatrix());
sr.setTransformMatrix(batch.getTransformMatrix());
sr.begin(ShapeRenderer.ShapeType.Filled);
sr.circle(centerX, centerY, radius);
sr.end();
batch.begin();
...
}
然后创建一个Stage对象,并将CircleActor对象添加到Stage中即可显示。 但是无法给此CircleActor对象添加一个ClickLitener监听。
例如如下代码:
Stage stage = new Stage();
CircleActor ca = new CircleActor(100, 100, 50, "Hello World");
ca.addListener(new ClickListener(){
public void click(){
Gdx.app.log("TAG", "ca is clicked");
}
})
stage.add(ca);
上述代码中的click方法永远无法被调用! 后续调了大半天之后终于弄清楚了原因:虽然在CircleActor的draw方法中通过ShapeRenderer.circle方法将一个圆画到了屏幕上的某一位置,但是此ShapeRenderer其实和Actor之间并没有太多的联系。唯一的联系就是以下两句代码, 意思应该是将ShapeRenderer的camera和Actor对象一致。
sr.setProjectionMatrix(batch.getProjectionMatrix()); sr.setTransformMatrix(batch.getTransformMatrix());
但是此时,CircleActor并没有设置真正的大小与位置, 因此解决上述问题,需要在构造器中将CircleActor的大小和位置与ShapeRenderer做到一致 !!
如下代码所示,只要添加两行代码即可:
public EfCircle(float x, float y, float radius, String text) {
this.centerX = x;
this.centerY = y;
this.radius = radius;
this.text = text;
//解决ShapeRenderer无法获取Touch事件
setPosition(centerX - radius, centerY - radius);
setSize(radius * 2, radius * 2);
sr = new ShapeRenderer();
}
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Android中Libgdx使用ShapeRenderer解决Touch事件
# Android
# shapeRendere解决Touch事件的问题
# 详解Android Libgdx中ScrollPane和Actor事件冲突问题的解决办法
# Android使用libgdx实现模拟方向键控制角色移动的方法
# Android 游戏引擎libgdx 资源加载进度百分比显示案例分析
# Android drawable微技巧
# 你不知道的drawable细节
# Android指纹识别API讲解
# 一种更快更好的用户体验
# Android在Kotlin中更好地使用LitePal
# Android Studio轻松构建自定义模板的步骤记录
# 详解Android 检测权限的三种写法
# Android最简单的状态切换布局实现教程
# android自定义环形对比图效果
# Libgdx解决部分Android机型锁屏崩溃的方法
# 自定义
# 所示
# 创建一个
# 太多
# 如有
# 大半天
# 希望能
# 并将
# 两句
# 谢谢大家
# 装在
# 弄清楚
# 两行
# 画一
# 主要是
# 应该是
# 疑问请
# 实现了
# 器中
# 屏幕上
相关文章:
如何在新浪SAE免费搭建个人博客?
电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?
css网站制作参考文献有哪些,易聊怎么注册?
网站制作的方法有哪些,如何将自己制作的网站发布到网上?
深圳网站制作案例,网页的相关名词有哪些?
建站主机解析:虚拟主机配置与服务器选择指南
制作农业网站的软件,比较好的农业网站推荐一下?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成
网站制作话术技巧,网站推广做的好怎么话术?
电商网站制作公司有哪些,1688网是什么意思?
网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
如何快速上传自定义模板至建站之星?
免费制作小说封面的网站有哪些,怎么接网站批量的封面单?
如何在建站之星网店版论坛获取技术支持?
宝塔面板如何快速创建新站点?
新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?
建站之星logo尺寸如何设置最合适?
广德云建站网站建设方案与建站流程优化指南
实例解析Array和String方法
网站按钮制作软件,如何实现网页中按钮的自动点击?
公司网站设计制作厂家,怎么创建自己的一个网站?
网站制作网站,深圳做网站哪家比较好?
C#怎么创建控制台应用 C# Console App项目创建方法
如何彻底删除建站之星生成的Banner?
建站之星ASP如何实现CMS高效搭建与安全管理?
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
如何快速生成ASP一键建站模板并优化安全性?
Swift中swift中的switch 语句
佛山企业网站制作公司有哪些,沟通100网上服务官网?
建站主机是否等同于虚拟主机?
网站企业制作流程,用什么语言做企业网站比较好?
如何快速搭建高效WAP手机网站吸引移动用户?
如何在宝塔面板中创建新站点?
自助网站制作软件,个人如何自助建网站?
大连 网站制作,大连天途有线官网?
内部网站制作流程,如何建立公司内部网站?
全景视频制作网站有哪些,全景图怎么做成网页?
定制建站哪家更专业可靠?推荐榜单揭晓
C++时间戳转换成日期时间的步骤和示例代码
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?
高防服务器租用指南:配置选择与快速部署攻略
电商网站制作价格怎么算,网上拍卖流程以及规则?
建站主机功能解析:服务器选择与快速搭建指南
网站制作软件有哪些,制图软件有哪些?
小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建
网站制作服务平台,有什么网站可以发布本地服务信息?
如何快速查询网址的建站时间与历史轨迹?
*请认真填写需求信息,我们会在24小时内与您取得联系。