如何快速移动图片,又不能闪烁, 如果不牵扯动态加载图片用flash动态加载用,在百度搜索:无缝滚动图片 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 3楼的说法不太正确,因为计算机的显示原理,大体上是根据刷新频率,定期将显存中的内容显示到显示器上。因此,对于程序中的处理来说多数情况是和这个每秒25帧无关的。但如果向显存中描画图像的数据很花费时间的话,就会使描画的过程跨跃多个帧,这样就产生闪烁的现象。通常的做法是将图像生成后保存在内存中,然后使用块拷贝的命令将图像的数据整块复制到显存中。这样就不会有明显的闪烁感了,对于图像的移动来说,只是单纯的数据块移动。因此从原理上来说不应该有闪烁。我想应该还是marquee本身的问题吧。刚刚试了一下,直接用javascript代码实现的话,不会有太明显的闪烁。 随便做了个小例子,供参考。<html> <script language="javascript"> var f = false; var the_timeout; function slide(){ if( parseInt(div1.style.left) > 800 ) { div1.style.left = 0; } else { div1.style.left =parseInt(div1.style.left) + 3; } the_timeout = setTimeout( "slide();", 30 ); } function switchSlide(){ if( f == false ){ slide(); f = true; } else { clearTimeout( the_timeout ); f = false; } } </script> <body> <input type="button" value="move" onclick="switchSlide()"> <div id="div1" style='position:absolute; display:; cursor:hand; left:00px; top:40px; width:200px; height:100px; z-index:1' > <img src="1.JPG"> </div> </body></html> 4楼:这不就是显示时侯帧不够,才会出现抖动、闪烁的原因吗?以前我用Flash5时只能达到12帧,所以只能做动画,不能做视频。反对,我用VB使用图像框,快速移动仍然颤动,很多需要要用直接读取GDI或DirectX,听说半条命达到170Frame/s,所以闪烁的问题就是显示帧数的问题!怀疑js干不了这事,超出js的能力范围了。达到Marquee的一次1个像素移动的那种稳定度就可以了,就是要快点,你的程序试了,不行,抖动!你的效果和Marquee的一次2个像素的移动效果差不多!还有办法吗? 首先,给你的sample,你是否跑过了?看来你对了图像处理不是很了解,图像处理中,图像的描画,处理是比较花时间。如果让这样的操作直接在显存上进行,就会跨跃多个帧了。为什么呢?因为,计算机是定时从显存中读取数据的。也就是刷新频率了。怎么解决呢?就是让这些处理过程在内存中做,然后,使用数据块传送的命令传送到显存中。(当然,简单的说图像处理和图像的显示差不多是分别由CPU和GPU来完成的。)块传送的速度是非常快的。这样就不会有闪烁的现在。总的来说,只要你能保证在一次的刷新间隔中更新显存中的图像数据,就不会有闪烁的现象了。这个基础之上才能谈到你说的每秒25帧的问题。如果你做过VC开发,或者你用VB基于WINDOWS API做过图像处理的开发的话,就会知道,用VB也可以做出移动不闪烁程序的。当然,VB自己的绘图函数很简单,是做不出这样效果的。主要是原因就是上面说的那样。其实,VB下,有些控件也提供有上面所说的这样的属性来支持这样的处理。 首先,给你的sample,你是否跑过了? //上面已经说了,运行过了,有闪烁,我的机器是笔记本,没有独显,这个影响大吗?网页上能否更好的实现快速移动无闪烁? 抱歉,没有细看你前的内容。这个例子在我的机器上跑的时候没有明显的抖动。只是窗口的边缘稍微有些抖。你测试的图片有多大?我用的是1280*1024。不过我的机器配置比较高。我想和机器的配置是有关系的。你所说的独显,是指3D的显示卡。但这里用不到3D运算。现在的显示卡一般2D的性能都应该能满足要求了。因此和显示卡的关系不大,另外,应该和显示器有一定关系。 请问如何用 windows media player 插件获取当前播放时间? 如何解析出字符串中的部分内容 javascript searchFiles问题 怎样获取html控件的值 javascript 钩子 文本框中值改变会触发哪些事件? 各路高手救救小妹。请问如何在javascript中捕获键盘的动作? 问题没解决,继续问,还是那个循环ID的问题!!!! 如何让网页中图片顶格 求助:WebMenuShop2.10注册码?谁能告诉我吗? Re:一个关于iframe的问题 在谷歌浏览器中,如何用JS复制内容到剪贴板上???
3楼的说法不太正确,
因为计算机的显示原理,
大体上是根据刷新频率,
定期将显存中的内容显示到显示器上。
因此,对于程序中的处理来说多数情况是和这个每秒25帧无关的。
但如果向显存中描画图像的数据很花费时间的话,
就会使描画的过程跨跃多个帧,
这样就产生闪烁的现象。
通常的做法是将图像生成后保存在内存中,
然后使用块拷贝的命令将图像的数据整块复制到显存中。
这样就不会有明显的闪烁感了,
对于图像的移动来说,只是单纯的数据块移动。
因此从原理上来说不应该有闪烁。我想应该还是marquee本身的问题吧。
刚刚试了一下,直接用javascript代码实现的话,
不会有太明显的闪烁。
<script language="javascript">
var f = false;
var the_timeout;
function slide(){
if( parseInt(div1.style.left) > 800 ) {
div1.style.left = 0;
} else {
div1.style.left =parseInt(div1.style.left) + 3;
}
the_timeout = setTimeout( "slide();", 30 );
}
function switchSlide(){
if( f == false ){
slide();
f = true;
} else {
clearTimeout( the_timeout );
f = false;
}
}
</script>
<body>
<input type="button" value="move" onclick="switchSlide()">
<div id="div1" style='position:absolute; display:; cursor:hand; left:00px; top:40px; width:200px; height:100px; z-index:1' >
<img src="1.JPG">
</div>
</body>
</html>
反对,
我用VB使用图像框,快速移动仍然颤动,很多需要要用直接读取GDI或DirectX,听说半条命达到170Frame/s,所以闪烁的问题就是显示帧数的问题!怀疑js干不了这事,超出js的能力范围了。达到Marquee的一次1个像素移动的那种稳定度就可以了,就是要快点,你的程序试了,不行,抖动!你的效果和Marquee的一次2个像素的移动效果差不多!还有办法吗?
图像处理中,
图像的描画,处理是比较花时间。
如果让这样的操作直接在显存上进行,
就会跨跃多个帧了。
为什么呢?
因为,计算机是定时从显存中读取数据的。
也就是刷新频率了。
怎么解决呢?
就是让这些处理过程在内存中做,
然后,使用数据块传送的命令传送到显存中。
(当然,简单的说图像处理和图像的显示差不多是分别由CPU和GPU来完成的。)
块传送的速度是非常快的。
这样就不会有闪烁的现在。
总的来说,只要你能保证在一次的刷新间隔中更新显存中的图像数据,
就不会有闪烁的现象了。这个基础之上才能谈到你说的每秒25帧的问题。如果你做过VC开发,或者你用VB基于WINDOWS API做过图像处理的开发的话,
就会知道,用VB也可以做出移动不闪烁程序的。
当然,VB自己的绘图函数很简单,是做不出这样效果的。
主要是原因就是上面说的那样。
其实,VB下,有些控件也提供有上面所说的这样的属性来支持这样的处理。
网页上能否更好的实现快速移动无闪烁?
这个例子在我的机器上跑的时候没有明显的抖动。
只是窗口的边缘稍微有些抖。你测试的图片有多大?
我用的是1280*1024。
不过我的机器配置比较高。
我想和机器的配置是有关系的。你所说的独显,是指3D的显示卡。
但这里用不到3D运算。
现在的显示卡一般2D的性能都应该能满足要求了。
因此和显示卡的关系不大,另外,应该和显示器有一定关系。