Voglio cambiare il mio sfondo scuro e deprimente in uno sfondo erboso felice , in tempo reale, in modo tale che lo sfondo felice sia mostrato in un raggio attorno a un personaggio del gioco.
Un campo di forza di felicità , se vuoi.
Come è possibile farlo nel modo più efficiente possibile quando si esegue il rendering su una tela in una vista personalizzata?
AGGIORNAMENTO: Ecco come funziona nella mia testa:
private int hModeX, hModeY;
private float hModeRadius = 0.1f;
private float hModeStart = 0;
happyModeBg = Bitmap.createScaledBitmap(happyModeBg, getWidth(),getHeight(), true);
hModeX = getWidth()/2;
hModeY = getHeight()/2;
private void initHappyMode(Canvas canvas){
hModeRadius = 75 * thread.getDelta();
if(hModeRadius > 500) {
hModeStart = timestep; //What is timestep?
}
//context.arc(x, y, radius, 0, 2 * Math.PI, false); <- your version
canvas.save();
canvas.drawArc(oval, startAngle, sweepAngle, useCenter, paint) // <- my version
//context.clip(); <- dont know what this does or if there is an equivilant
canvas.drawBitmap(happyModeBg, 0, 0, null);
canvas.restore();
//requestAnimationFrame(step); <- dont know what this does since I cant seem to find it for android
}
Sto usando canvas.drawArc()
per fare un cerchio, ma sicuramente mi manca qualcosa.
Canvas
fa le cose un po 'diversamente dall'HTML <canvas>
, che pensavo intendessi! Ho modificato la mia risposta per spiegare come funziona il clipping in generale, con alcuni link specifici di Android e un codice di esempio.