Pregunta

Estoy programando algunos controles personalizados en Java y uso de animación para transiciones/desvanecimientos/movimientos.

La forma en que estoy haciendo esto es que estoy comenzando un nuevo hilo y haciendo ajustes a variables y las cosas se ajustan usando paint() método.

Ejemplo:

Ahora, mi pregunta es, digamos, por ejemplo, que estaba implementando un desvanecimiento. Lo que haría es incrementar la variable alfa de byte x //between 0-255 y pintar un rectángulo donde alphaLevel += x, por ejemplo (en pseudo-código):

byte increment = 40;

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

_parentClass.setAlphaLevel (255);

Lo que quiero saber es qué es el más bajo y cuál es el más alto que debo dormir para que la animación no se vea entrecortada. ¿Tiene algo que demora con las tasas de actualización del dispositivo objetivo o cualquier cosa con los ojos humanos? La misma pregunta nuevamente con el paso. ¿Hay un sitio web que me dé buenas cifras que pueda copiar?

La razón por la que pregunto es maximizar la eficiencia, ya que se ejecutará en un dispositivo que funciona con batería, por lo que más tiempo de CPU = menos batería. ¿A qué lo establecería?

Gracias.

¿Fue útil?

Solución

La técnica que estás buscando se llama "doble amortiguación".

Lamento no tener tiempo para mostrarle un ejemplo, pero eso es lo que debe considerar.

Otros consejos

Personalmente sugeriría investigar el Biblioteca de animación Trident, incluso si lo está utilizando en un contexto móvil (como parece por la pregunta que es), la biblioteca parece ser solo unos 100k.

No estoy seguro de qué tan adecuado es para su situación, sin embargo, vale la pena intentarlo.

Y en un punto nitpicky ... el byte El tipo de datos en Java no está sin firmar, por lo que su rango es en realidad -128 a 127.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top