LibGdx将ShapeRenderer和Path结合使用,实现填充效果

这里写图片描述
在日常使用LibGdx的过程当中,经常会遇到填充一条线或者一个圆圈的需求,如上图中每一个圆圈都由一个path连接,需求就是让每一条path都从0自动的绘制响应的长度。

如果有这种需求就可以考虑使用Path + ShapeRenderer结合来实现。 具体demo代码示例如下:

package com.ef.smallstar.matching_text_to_text;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
import com.badlogic.gdx.math.Bezier;
import com.badlogic.gdx.math.Vector2;

import static android.opengl.GLES20.glClear;
import static android.opengl.GLES20.glClearColor;

/**
 * Created by Danny 姜 on 17/8/22.
 */

public class MyAdapter extends ApplicationAdapter {

    protected Bezier<Vector2> bezier;

    float t;

    float speed = 0.1f;

    final Vector2 tmpV = new Vector2();

    ShapeRenderer shapeRenderer;

    @Override
    public void create() {
        super.create();

        shapeRenderer = new ShapeRenderer();

        bezier = new Bezier<>(new Vector2(100, 100), new Vector2(500, 500));
    }

    @Override
    public void render() {
        super.render();

        glClearColor(0.7f, 0.7f, 0.7f, 1);
        glClear(GL20.GL_COLOR_BUFFER_BIT);


        if (tmpV.x <= Gdx.graphics.getWidth() || tmpV.y <= Gdx.graphics.getHeight()) {
            t += speed * Gdx.graphics.getDeltaTime();
            bezier.valueAt(tmpV, t);
        }

        Gdx.app.error("DANNY", "tmpV.x is " + tmpV.x + " tmpV.y is " + tmpV.y);

        shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);

        shapeRenderer.rectLine(100, 100, tmpV.x, tmpV.y, 10);

        shapeRenderer.end();
    }
}

demo运行效果如下:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值