Image 背景图像在div中闪烁

Image 背景图像在div中闪烁,image,html,flicker,Image,Html,Flicker,我正在使用asp.net 我使用javascript在客户机上缓存了图像,并且每300毫秒加载一个图像。在Chrome上没有问题。在IE9+10上,我得到一个闪烁。我想如果先缓存图像,我就能避免闪烁 我也试过使用2个div。1隐藏并加载下一帧和第二个div以显示第一个div的背景图像(一旦加载),但我仍然会得到闪烁 真的很困惑 我的代码: HTML 你好,安迪 Javascript <script type="text/javascript"> var cache = [

我正在使用asp.net

我使用javascript在客户机上缓存了图像,并且每300毫秒加载一个图像。在Chrome上没有问题。在IE9+10上,我得到一个闪烁。我想如果先缓存图像,我就能避免闪烁

我也试过使用2个div。1隐藏并加载下一帧和第二个div以显示第一个div的背景图像(一旦加载),但我仍然会得到闪烁

真的很困惑

我的代码:

HTML


你好,安迪
Javascript

<script type="text/javascript">
    var cache = [];
    var cacheImage = document.createElement('img');
    var interval = 100;
    var _total = 0;

    $("#btnPlay").click(function () {
        $.ajax({
            type: "POST",
            url: "Default3.aspx/GetClips",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                cache = [];
                 _total = 0;
                $.each(msg.d, function () {
                    var cacheImage = document.createElement('img');
                    cacheImage.src = this['Text'];
                    cache[_total] = cacheImage;
                    _total++;
                }
                );
                setInterval('swapImages()', interval);
            },
            error: function (msg) {
                alert(msg.d);
            }
        });
    });
    var div = document.getElementById('divImage');
    var _index = 0;
    function swapImages() {

        if (_index < _total) {              
            if (_index > 0) {
                div.removeChild(cache[_index - 1]);
            }               
            div.appendChild(cache[_index]);
        }
        else {
            interval = 0;
        }
        _index++;
        if (_index  == _total)
        {
            div.removeChild(cache[_index - 1]);
            _index = 0;
            div.appendChild(cache[_index]);
        }
    }

var缓存=[];
var cacheImage=document.createElement('img');
var区间=100;
var _total=0;
$(“#btnPlay”)。单击(函数(){
$.ajax({
类型:“POST”,
url:“Default3.aspx/GetClips”,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:功能(msg){
缓存=[];
_总数=0;
$.each(msg.d,函数(){
var cacheImage=document.createElement('img');
cacheImage.src=此['Text'];
cache[_total]=cacheImage;
_总计++;
}
);
setInterval('swapImages()',interval);
},
错误:函数(msg){
警报(msg.d);
}
});
});
var div=document.getElementById('divImage');
var_指数=0;
函数swapImages(){
如果(_索引<_总计){
如果(_索引>0){
div.removeChild(缓存[_索引-1]);
}               
div.appendChild(缓存[_索引]);
}
否则{
间隔=0;
}
_索引++;
如果(_索引==_总计)
{
div.removeChild(缓存[_索引-1]);
_指数=0;
div.appendChild(缓存[_索引]);
}
}
代码隐藏:

[WebMethod]
    public static ArrayList GetClips()
    {
        ArrayList _arr = new ArrayList();
        int _max = 250;  //seems to be safe
        string[] _files = Directory.GetFiles(@"C:\Cloud\Catalogues\000EC902F17F\2\2013\10\6\10\f1fe61da-4684-48ed-a503-4a5586ece9c8","*.jpg"); //731
           for (int _index = 0; _index < _files.Length; _index++)
        {
            string _file = _files[_index];
            string[] _bits = _file.Split('\\');
            string _url = "Portal/Catalogues/000EC902F17F/2/2013/10/6/10/f1fe61da-4684-48ed-a503-4a5586ece9c8/" + _bits[10];
            ListItem _item = new ListItem();
            _item.Text = _url;
            _arr.Add(_item);
            if (_index == _max - 1)
            {
                break;
            }
        }
        return _arr;
    }
[WebMethod]
公共静态ArrayList GetClips()
{
ArrayList_arr=新的ArrayList();
int _max=250;//似乎很安全
string[]_files=Directory.GetFiles(@“C:\Cloud\cataloges\000EC902F17F\2\2013\10\6\10\f1fe61da-4684-48ed-a503-4a5586ece9c8”,“*.jpg”);//731
对于(int\u index=0;\u index<\u files.Length;\u index++)
{
字符串_file=_files[_index];
字符串[]\u位=\u文件.Split('\\');
字符串_url=“Portal/cataloges/000EC902F17F/2/2013/10/6/10/f1fe61da-4684-48ed-a503-4a5586ece9c8/”+_位[10];
ListItem _item=新建ListItem();
_item.Text=\uURL;
_arr.Add(_项);
如果(_索引==_最大值-1)
{
打破
}
}
返回_arr;
}

以防有人感兴趣。我这样做:


我添加了一个隐藏的img控件。我将图像加载到该文件中,在onload事件中,我调用了一个函数将img.src加载到div背景中。到目前为止,这似乎是可行的

我能看看你的密码吗this@Vickey当然2秒..@Vickey这是我最初使用的。后来我尝试使用div背景。img和div上都出现闪烁
[WebMethod]
    public static ArrayList GetClips()
    {
        ArrayList _arr = new ArrayList();
        int _max = 250;  //seems to be safe
        string[] _files = Directory.GetFiles(@"C:\Cloud\Catalogues\000EC902F17F\2\2013\10\6\10\f1fe61da-4684-48ed-a503-4a5586ece9c8","*.jpg"); //731
           for (int _index = 0; _index < _files.Length; _index++)
        {
            string _file = _files[_index];
            string[] _bits = _file.Split('\\');
            string _url = "Portal/Catalogues/000EC902F17F/2/2013/10/6/10/f1fe61da-4684-48ed-a503-4a5586ece9c8/" + _bits[10];
            ListItem _item = new ListItem();
            _item.Text = _url;
            _arr.Add(_item);
            if (_index == _max - 1)
            {
                break;
            }
        }
        return _arr;
    }