我有一个带有XNA应用程序的Windows Phone 7 Silverlight。 我也使用一种服务,它使用javascript将动态图像渲染到屏幕上。
在PC上,javascript流畅而流畅,我可以平滑地在图像和过渡之间跳转。但是,我需要将此功能带到手机上。
截至目前,我已成功使用Silverlight中的Web浏览器控件加载我的HTML文件并执行脚本。问题是,一旦应用程序的“动态”部分启动,Web控件就不能足够快地更新。而不是PC版本导致的平滑滑动动画,我得到了口吃,类似于游戏中的低FPS。
所以,我想知道:有没有办法提高网页浏览器控件的更新率?
我曾经有过(但实际上没有成功)的另一个想法是在应用程序的XNA页面中嵌入一个Web浏览器并使用XNA的更新速率,这个速度要高得多(我猜是标准的60) FPS)。但是,Silverlight Web浏览器控件似乎没有更新呈现功能,我找不到一个库来嵌入XNA应用程序本身的Web浏览器。
有没有人知道我如何使用javascript来获取流畅而流畅的动态HTML文件?
修改 使用30 FPS的计时器的webBrowser.InvalidateArrange()似乎加快了浏览器的刷新速度,但它仍然是跳跃式的。如果我尝试增加FPS,浏览器会恢复为慢速。
答案 0 :(得分:0)
我猜是标准的60 fps
标准是30 FPS
我找不到一个库来嵌入XNA应用程序本身的Web浏览器。
我认为它不会有任何改进。
所以,我想知道:有没有办法提高a的更新率 网页浏览器控件?
答案 1 :(得分: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;
}