Mam FlowPanel który próbuję animowanie iz powrotem jak nav iPhone. (Zobacz this post na moje oryginalne pytanie, jak to zrobić)GWT Animacja końcowa wartość nie jest przestrzegana
Tak więc mam to "działa" z kodem pokazanym poniżej. Mówię pracuje w cudzysłowie, bo jestem stwierdzenia, że moja ostateczna pozycja mojej zmieniacza nie jest precyzyjny i zawsze zmienia się podczas przewijania.
GWT.log zawsze mówi rzeczywiste wartości szukam, więc na przykład z wezwaniem do scrollTo poniżej, mój GWT.log mówi:
ScrollStart: 0 scrollStop: -246
Ale kiedy rzeczywiście analizować element w Firebug, jego css, lewa pozycja nie jest dokładnie -246px. Czasami jest on wyłączony nawet o 10 pikseli, więc mój panel właśnie przestał przewijać przed zakończeniem.
Najgorsze jest to, że nav ożywia iz powrotem, tak naprawdę kolejne kliknięcia można wyrzucić go, i muszę piksela idealny pozycjonowanie inaczej całe rzeczy wygląda off.
Nie wiem nawet, od czego zacząć od debugowania tego poza tym, co już zrobiłem. Wszelkie wskazówki są mile widziane.
EDIT: Dodatkowe informacje logowania:
Logging wewnątrz onUpdate pokazuje to:
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
Dlaczego to się kończy na 0,98% ???
Kod zadzwonić animacja
scroller = new Scroller();
scroller.scrollTo(-246,400);
kod animacji
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);
}
}
mam zrobiłem to, właściwie, ale założyłem, że to był hack. Więc GWT nie gwarantuje, że postęp osiągnie 100%? Nie robią tego w oczywisty sposób w dokumentach: – brad
onUpdate nigdy nie trafi 1.0, ponieważ zakończono = curTime> = startTime + czas trwania, jednak docs mówią, że jest 1.0 włącznie. – LINEMAN78
Zgłosiłem zgłoszenie błędu, zobaczymy, co zespół GWT mówi: http://code.google.com/p/google-web-toolkit/issues/detail?id=7393 – LINEMAN78