IE 下VML动画的奇怪现象:GWTCanvas基于定时器的图形动画当鼠标移动时停止动画效果(直接用VML写代码效果也一样)

来源:互联网 发布:linux运维面试技巧 编辑:程序博客网 时间:2024/06/10 08:28

问题描述:在IE下做VML动画,动画会因为鼠标不停移动而停止(只要面积较大)。即使绘制非常简单的图形(但是面积较大),这种情况也会发生。鼠标不动就不会发生。

 

软硬件情况:IE或以IE为核的浏览器,我的机器内存,CPU都比较快。

 

问题研究:出现这种情况如果只是GWTCanvas在绘制时存在这样的问题,很可能是GWTCanvas封装得不好。但后来用VML直接试也有相同问题,这就让我比较肯定这是M$的问题了。具体的,我做了一下三个实验:

1. 动画由小图形(同时图形是只由几个线条构成的简单图形),结果当然是又快又好,鼠标在上面怎么动都不影响动画。

2. 动画由小图形(同时图形是只由很多线条构成的复杂图形),结果也是是又快又好,鼠标在上面怎么动都不影响动画。

3. 动画由大图形(同时图形是只由几个线条构成的简单图形),结果鼠标在上面一移动,动画就停止了。

 

我并没有写相应鼠标移动事件的event handler。为什么IE会停止对定时器的相应呢?IE内部对鼠标事件的处理的优先级比定时器事件的优先级高? 或者是IE的VML在重绘时有严重的问题? 没办法,我的建议是:如果你要画的图形比较大,又是动画。请你在VML中控制要显示给用户部分。不要把控制权交给VML,交给M$.

 

谁也碰到类似问题了吗?有人(M$er)看过IE/VML的内核代码吗?

这个问题已经提交到gwt-incubator的开发组了,虽然我认为这不是GWTCanvas的问题,但论坛里的人还是建议我把问题提交到这里:gwt-incubator issue

我的问题提交到google groups的这里