GWT DeckLayoutPanel动画在Chrome上进入无限循环

时间:2013-01-14 11:36:18

标签: gwt

以下代码会在Chrome的最新版本(24.0.1312.52)上生成无限动画。相同的代码与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);
}
}

还有其他人遇到过这个问题吗?

2 个答案:

答案 0 :(得分: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等。

答案 1 :(得分: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 ************* -->