Tengo un FlowPanel que intento animar de un lado a otro como un navegador de iphone. (Vea la publicación this para mi pregunta original sobre cómo hacer esto)GWT El valor final de la animación no se respeta
Así que lo tengo "trabajando" con el código que se muestra a continuación. Digo trabajando entre comillas porque estoy descubriendo que mi posición final de mi desplazamiento no es precisa y siempre cambia cuando se desplaza.
El GWT.log siempre dice que los valores reales que estoy buscando, por lo que, por ejemplo, con la llamada a continuación scrollTo, mi GWT.log dice:
ScrollStart: 0 scrollStop: -246
Pero cuando realmente analizo el elemento en fireBug, su posición css, left nunca es exactamente -246px. A veces está tan lejos como 10px por lo que mi panel ha dejado de desplazarse antes de terminar.
La peor parte es que este navegador se mueve hacia adelante y hacia atrás, por lo que los clics posteriores realmente pueden tirarlo, y necesito un posicionamiento perfecto para los píxeles, de lo contrario, todo se ve apagado.
Ni siquiera sé por dónde empezar con la depuración de este que no sea lo que ya he hecho. Cualquier consejo es apreciado.
EDIT: la información de registro adicional:
Logging dentro de la onUpdate muestra esto:
Updating: progress: 0.09319577524960648 position: -22.926160711403195
Updating: progress: 0.1328387452821571 position: -32.67833133941065
Updating: progress: 0.609071620698271 position: -149.83161869177468
Updating: progress: 0.7269952498697734 position: -178.84083146796425
Updating: progress: 0.9852532367342712 position: -242.37229623663072
AnimationComplete: final scrollStart/scrollStop: 0/-246
¿Por qué se terminan a 0,98% ???
código para llamar a la animación
scroller = new Scroller();
scroller.scrollTo(-246,400);
Código Animación
public class Scroller extends Animation {
private FlowPanel scroller;
private final Element e;
public Scroller(){
scroller = new FlowPanel();
e = scroller.getElement();
}
public void scrollTo(int position, int milliseconds) {
scrollStart = e.getOffsetLeft();
scrollStop = position;
GWT.log("ScrollStart: " + scrollStart + " scrollStop: " + scrollStop);
run(milliseconds);
}
@Override
protected void onUpdate(double progress) {
double position = scrollStart + (progress * (scrollStop - scrollStart));
e.getStyle().setLeft(position, Style.Unit.PX);
}
}
tengo hecho esto, en realidad, pero supuse que era un truco. ¿Entonces GWT no garantiza que el progreso llegue al 100%? No lo hacen tan obvio en los documentos – brad
onUpdate nunca llegará a 1.0 porque finished = curTime> = startTime + duration, sin embargo, los documentos dicen que es 1.0 inclusive. – LINEMAN78
Envié un informe de error, veremos lo que dice el equipo de GWT: http://code.google.com/p/google-web-toolkit/issues/detail?id=7393 – LINEMAN78