你總是可以編寫一些本地(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將這兩個答案分開保存會更好......上面的評論參考了該行下面的部分(腳本解決方案)。被接受的答案只是線上的最上面部分,它描述了一種完全不同的方法。 –