最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解 Android中Libgdx使用ShapeRenderer自定義Actor解決無法接收到Touch事件的問題

 更新時間:2017年09月06日 11:10:04   作者:Danny_姜  
這篇文章主要介紹了詳解 Android中Libgdx使用ShapeRenderer自定義Actor解決無法接收到Touch事件的問題的相關(guān)資料,希望通過本文能幫助到大家解決這樣的問題,需要的朋友可以參考下

詳解 Android中Libgdx使用ShapeRenderer自定義Actor解決無法接收到Touch事件的問題

今天在項目中實現(xiàn)了一個效果,主要是畫一個圓。為了后續(xù)使用方便,將這個圓封裝在一個自定義Actor(CircleActot)中,后續(xù)想顯示一個圓的時候,只要創(chuàng)建一個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();

    ...
  }

然后創(chuàng)建一個Stage對象,并將CircleActor對象添加到Stage中即可顯示。 但是無法給此CircleActor對象添加一個ClickLitener監(jiān)聽。

例如如下代碼:

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方法永遠無法被調(diào)用! 后續(xù)調(diào)了大半天之后終于弄清楚了原因:雖然在CircleActor的draw方法中通過ShapeRenderer.circle方法將一個圓畫到了屏幕上的某一位置,但是此ShapeRenderer其實和Actor之間并沒有太多的聯(lián)系。唯一的聯(lián)系就是以下兩句代碼, 意思應(yīng)該是將ShapeRenderer的camera和Actor對象一致。

sr.setProjectionMatrix(batch.getProjectionMatrix());
sr.setTransformMatrix(batch.getTransformMatrix());

但是此時,CircleActor并沒有設(shè)置真正的大小與位置, 因此解決上述問題,需要在構(gòu)造器中將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();
  }

如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • 利用Android設(shè)計一個倒計時組件

    利用Android設(shè)計一個倒計時組件

    在很多電商工作項目中經(jīng)常有倒計時的場景,比如活動倒計時、搶紅包倒計時等等,今天小編就帶大家來學(xué)習(xí)如何利用Android設(shè)計倒計時組件,感興趣的小伙伴一起奧
    2021-09-09
  • 詳解Android 華為凹口屏適配小結(jié)

    詳解Android 華為凹口屏適配小結(jié)

    這篇文章主要介紹了Android 華為凹口屏適配小結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • Android狀態(tài)欄白底黑字的示例代碼

    Android狀態(tài)欄白底黑字的示例代碼

    這篇文章主要介紹了Android狀態(tài)欄白底黑字的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • Android 攝像頭高斯模糊的示例代碼

    Android 攝像頭高斯模糊的示例代碼

    本篇文章主要介紹了Android 攝像頭高斯模糊的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • Android 面試題匯總

    Android 面試題匯總

    本文主要介紹Android 面試題,這里整理了70道面試題和答案供大家學(xué)習(xí)參考,有需要的小伙伴可以參考下
    2016-09-09
  • Android編程判斷當(dāng)前應(yīng)用是否在后臺運行的方法示例

    Android編程判斷當(dāng)前應(yīng)用是否在后臺運行的方法示例

    這篇文章主要介紹了Android編程判斷當(dāng)前應(yīng)用是否在后臺運行的方法,涉及Android針對當(dāng)前程序運行狀態(tài)相關(guān)屬性操作與判定技巧,需要的朋友可以參考下
    2018-03-03
  • Android繪制驗證碼的實例代碼

    Android繪制驗證碼的實例代碼

    這篇文章主要介紹了Android繪制驗證碼的實例代碼,需要的朋友可以參考下
    2017-07-07
  • Android xml文件的序列化實現(xiàn)代碼

    Android xml文件的序列化實現(xiàn)代碼

    Android提供了XmlSerializer來實現(xiàn)XML文件的序列化。相比傳統(tǒng)方式,更高效安全,需要的朋友可以參考下
    2014-02-02
  • Android編程單擊圖片實現(xiàn)切換效果的方法

    Android編程單擊圖片實現(xiàn)切換效果的方法

    這篇文章主要介紹了Android編程單擊圖片實現(xiàn)切換效果的方法,以實例形式分析了Android布局及切換功能的具體實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • Android用MVP實現(xiàn)一個簡單的類淘寶訂單頁面的示例

    Android用MVP實現(xiàn)一個簡單的類淘寶訂單頁面的示例

    本篇文章主要介紹了Android用MVP實現(xiàn)一個簡單的類淘寶訂單頁面的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11

最新評論

白银市| 冕宁县| 获嘉县| 拉孜县| 鄂托克旗| 石渠县| 江华| 建阳市| 金乡县| 泸定县| 罗山县| 福海县| 营口市| 舞阳县| 宜兰市| 湘西| 长顺县| 临武县| 县级市| 钦州市| 襄城县| 武安市| 来凤县| 高青县| 墨江| 梓潼县| 衡水市| 彭州市| 卢龙县| 清丰县| 礼泉县| 扬中市| 宜宾市| 邯郸市| 南昌县| 博湖县| 建阳市| 陆良县| 长子县| 东山县| 界首市|