你总是可以编写一些本地(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);
有趣的,我不知道。但这样做会导致脚本动画,而不是CSS动画,对吧? GWT仍然不知道事件。脚本动画在重负载或某些移动设备上的平滑性能方面有一些缺点。 –
是的,这将导致脚本动画,这可能不如纯CSS动画的CPU效率。 –
@Kev将这两个答案分开保存会更好......上面的评论参考了该行下面的部分(脚本解决方案)。被接受的答案只是线上的最上面部分,它描述了一种完全不同的方法。 –