以下代码会在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);
}
}
还有其他人遇到过这个问题吗?
答案 0 :(得分:3)
这是GWT 2.4中的一个错误,因为Chrome中的requestAnimationFrame
现在使用亚毫秒计时器。这已在GWT 2.5.0中修复。
请参阅https://groups.google.com/d/topic/google-web-toolkit/UBWsvHYM4SE和https://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 ************* -->