Domanda

Sto programmando alcuni controlli personalizzati in Java e l'utilizzo di animazione per transizioni / dissolvenze / movimenti.

Il modo in cui sto facendo questo è che sto iniziando un nuovo thread e fare aggiustamenti alle variabili e le cose vengono regolati con il metodo paint().

Esempio:

Ora, la mia domanda è, diciamo per esempio che mi è stato l'attuazione di una dissolvenza in quello che vorrei fare è incrementare la variabile alfa da byte x //between 0-255 e dipingere un rettangolo in cui alphaLevel += x, per esempio (in pseudo-codice):.

byte increment = 40;

for (byte i = 0; i < 255; i += increment)
{
    _parentClass.setAlphaLevel (i);
    _parentClass.repaint();
    Thread.sleep (10);    
}

_parentClass.setAlphaLevel (255);

Quello che voglio sapere è ciò che è il più basso e ciò che è il più alto devo impostare il sonno per modo che l'animazione non sembra mosso? Ha a todo nulla con il target di frequenze di aggiornamento dispositivo o nulla todo con gli occhi umani? Stessa domanda di nuovo con passo. C'è un sito web che mi darà buoni risultati posso copiare.

Il motivo che mi chiedo, è quello di massimizzare l'efficienza in quanto sta per essere eseguito su una batteria operato dispositivo in modo più tempo di CPU = meno batteria. Cosa faresti impostarla?

Grazie.

È stato utile?

Soluzione

La tecnica che stai cercando si chiama "double buffering".

I rammarico non hanno il tempo di mostrare un esempio, ma questo è ciò che è necessario esaminare.

Altri suggerimenti

Io personalmente suggerisco di indagare il Trident animazione biblioteca , anche se si utilizza in un contesto mobile (come sembra dalla questione si è) la biblioteca sembra essere solo circa 100k.

Non sono sicuro di quanto bene adatto sia alla vostra situazione, ma vale la pena di provare.

E su un punto nitpicky ... il tipo di dati byte in Java non è firmato, quindi la sua gamma è in realtà da -128 a 127.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top