您始终可以自己编写一些本机 (JavaScript) 代码:
public class CssAnimation {
public static native void registerCssCallback(
Element elem, AsyncCallback<Void> callback) /*-{
elem.addEventListener("webkitAnimationEnd", function() {
$entry(@CssAnimation::cssCallback(Lcom/google/gwt/user/client/rpc/AsyncCallback;)(callback));
}, false);
}-*/;
protected static void cssCallback(AsyncCallback<Void> callback) {
callback.onSuccess(null);
}
}
我还没有尝试过上面的代码。让我知道它是否按预期工作。
您可以使用 GWT 的Animation类来实现相同的效果。例如,
new com.google.gwt.animation.client.Animation() {
final com.google.gwt.dom.client.Style es = widget.getElement().getStyle();
@Override
protected void onUpdate(double progress) {
setOpacity(1 - interpolate(progress));
}
private void setOpacity(double opacity) {
es.setProperty("opacity", Double.toString(opacity));
es.setProperty("filter", "alpha(opacity=" + 100 * opacity + ")");
}
@Override
protected void onComplete() {
/* ... run some code when animation completes ... */
}
}.run(2000, 5000);