Android - 绘制一个与播放器一起移动的倒圆圈

时间:2014-10-14 11:11:25

标签: android android-canvas geometry shadow invert

我正在构建一款Android游戏,其中使用运动传感器控制和移动球。

有一些关于如何绘制倒圆like this one的帖子,但由于Android不支持BufferedImage,因此无法使用。

我使用以下代码创建了播放器

public class Player extends Task {
    private final static float MAX_SPEED = 20;
    private final static float SIZE = 16;
    private Circle _cir = null;
    private Paint _paint = new Paint();
    private Vec _vec     = new Vec();
    private Vec _sensorVec = new Vec();

    public Player(){
        _cir = new Circle( 15, 15, SIZE ); //15,15 is the initial x,y coordinates
    }
    public final Circle getPt(){
        return _cir;
    }
    private void setVec(){
        float x = -AcSensor.Inst().getX()*2;
        float y =  AcSensor.Inst().getY()*2;
        _sensorVec._x = x < 0 ? -x*x : x*x;
        _sensorVec._y = y < 0 ? -y*y : y*y;
        _sensorVec.setLengthCap(MAX_SPEED);
        _vec.blend( _sensorVec, 0.05f );
    }
    private void Move(){
        _cir._x += _vec._x;
        _cir._y += _vec._y;
    }

    @Override
    public boolean onUpdate(){
        setVec();
        Move();
        return true;
    }

    @Override
    public void onDraw( Canvas c ){
        c.drawCircle(_cir._x, _cir._y, _cir._r, _paint);
    }

}

问题是,如何在玩家周围创建一个倒圆圈,以便玩家只看到有限的距离,而外部部分充满黑色?例如,像this

0 个答案:

没有答案