2

以下代码会在最新 (24.0.1312.52) 版本的 Chrome 上产生无限动画。相同的代码在 FF/IE 上运行良好。

public class Test implements EntryPoint {
@Override
public void onModuleLoad() {
    DeckLayoutPanel deck = new DeckLayoutPanel();
    deck.setWidth("100%");
    deck.setHeight("100px");
    deck.setAnimationDuration(3000);
    deck.setWidget(new Label("Hello world"));

    RootLayoutPanel.get().add(deck);
}
}

有没有其他人也遇到过这个问题?

4

2 回答 2

3

这是 GWT 2.4 中的一个错误,因为 Chrome 中requestAnimationFrame现在使用亚毫秒计时器。这已在 GWT 2.5.0 中修复。

请参阅https://groups.google.com/d/topic/google-web-toolkit/UBWsvHYM4SEhttps://plus.google.com/113357348071579443502/posts/apHjmAcynRa等。

于 2013-01-14T11:48:15.507 回答
1

Thomas 完全正确,这是 GWT 2.4 中的一个错误,在 GWT 2.5 中是正确的。

如果您仍在使用 GWT 2.4,则可以通过以下对话来解决最新 chrome 构建带来的许多问题。

https://groups.google.com/forum/#!topic/google-web-toolkit/UBWsvHYM4SE

FTA:解决方法的摘要是将以下内容添加到您的 .gwt.xml 文件中:

<!-- TEMP FIX UNTIL GOING TO GWT 2.5 -->
<!-- Fallback implementation, based on a timer -->
<replace-with class="com.google.gwt.animation.client.AnimationSchedulerImplTimer">
  <when-type-is class="com.google.gwt.animation.client.AnimationScheduler"/>
  <any>
    <when-property-is name="user.agent" value="ie6"/>
    <when-property-is name="user.agent" value="ie8"/>
    <when-property-is name="user.agent" value="ie9"/>
    <when-property-is name="user.agent" value="safari"/>
    <when-property-is name="user.agent" value="opera"/>
  </any>
</replace-with>

<!-- Implementation based on mozRequestAnimationFrame -->
<replace-with class="com.google.gwt.animation.client.AnimationSchedulerImplMozilla">
  <when-type-is class="com.google.gwt.animation.client.AnimationScheduler"/>
  <when-property-is name="user.agent" value="gecko1_8"/>
</replace-with>
<!-- ************* END ************* -->
于 2013-01-14T13:52:39.953 回答