0

我有一个Windows Phone 7 Silverlight和XNA应用程序。 我还使用了一种使用javascript将动态图像呈现在屏幕上的服务。Windows Phone 7 Web浏览器更新太慢

在个人电脑上,JavaScript流畅而流畅,我可以在图像之间跳跃并平滑过渡。但是,我需要将此功能带到手机中。

截至目前,我已经设法使用Silverlight中的Web浏览器控件加载我的HTML文件并执行脚本。问题是,一旦应用程序的“动态”部分启动,Web控件的更新速度就不够快。与PC版本所带来的平滑滑动动画不同,我得到了口吃,类似于游戏中的低FPS。

所以,我想知道:有什么办法可以提高网页浏览器控件的更新率吗?

另一个想法是我已经(但实施失败了)是在应用程序的XNA页面中嵌入一个Web浏览器,并使用XNA的更新速率,这个速度要高得多(我猜测它是标准的60 fps)。但是,Silverlight Web浏览器控件似乎没有更新呈现功能,并且我无法找到将Web浏览器嵌入到XNA应用程序本身内的库。

有没有人有任何想法如何让我的动态HTML文件与JavaScript呈现流畅和流畅?

编辑: 使用在30 FPS定时器webBrowser.InvalidateArrange()似乎已经加快了浏览器刷新,但它仍然心惊肉跳。如果我尝试增加FPS,浏览器将恢复为慢速。

+0

这可能只是硬件和手机上JS引擎速度慢的问题。您可以尝试使用CSS转换来制作动画 - 这对大多数移动设备都有帮助。 – 2012-02-13 04:08:42

+0

因为我使用第三方JavaScript库(它为我提供了一个控件),所以我不能使用JS以外的其他任何东西。 – Dragonseer 2012-02-13 04:12:21

回答

0

使用定时器设置为17毫秒(60 FPS)我强制浏览器失效,导致它重画。除此之外,我还消除了浏览器不需要重新绘制的框架。

DispatcherTimer timer = new System.Windows.Threading.DispatcherTimer(); 
    timer.Interval = new TimeSpan(0, 0, 0, 0, 17); // 30 FPS 
    timer.Tick += new EventHandler(timer_Tick); 
    timer.Start(); 

    void timer_Tick(object sender, EventArgs e) 
    { 
     if (loaded && coded && needToUpdate) 
     { 
       webBrowser.InvokeScript("setPitch", pitch.ToString()); 
       webBrowser.InvokeScript("setHeading", heading.ToString()); 
       Redraw(); 

       needToUpdate = false; 
     } 
    } 

    void Redraw() 
    { 
     webBrowser.InvalidateMeasure(); 
     webBrowser.InvalidateArrange(); 
     webBrowser.Visibility = System.Windows.Visibility.Visible; 
    } 
0

我猜是标准的60 fps的

标准是30 FPS

我无法找到一个图书馆嵌入XNA应用程序本身内部的Web浏览器。

我不认为它会得到任何改进。

所以,我想知道:有什么办法来提高网络浏览器控制的更新率?

  1. 让一个只有在主页上的web浏览器控件的测试程序 - 确保没有什么吃的,除了网络控制的资源。
  2. 检查应用程序的执行方式。如果在用户使用“动态”部分的时候减少应用程序中的其他任何处理如果性能仍然很差,那么您只能优化JavaScript本身
  3. 如果它仍然不可接受,请切换功能或做一个本地的。
  4. 利润!
+0

目前浏览器应用程序是主页上唯一的东西。浏览器启动时没有其他处理。我无法优化JavaScript,因为它是第三方库,我无法访问它(这是Google的,所以我想它已经非常优化了)。我无法削减功能,因为这是功能。我不能做一个本地的,没有资源/不能违反Google TOS。重新XNA表现:XNA游戏更新速度非常快。我会想象一个为XNA构建的Web浏览器会运行良好。我还没有找到。 – Dragonseer 2012-02-13 04:34:57

+0

谷歌正在大量的浏览器上进行搜索,他们不太可能会针对WP7进行优化。网页控制是本地的,无论托管在哪里都无关紧要。如果你不能重新设计/削减/优化你注定。 – 2012-02-13 04:51:45

相关问题