我有這個標記。如何停止在ajax計時器圖像閃爍
你好
<script type="text/javascript">
$("#btnPlay").click(function() {
Play();
});
var $theDiv = $("#divPlayer");
var request;
var _currentFrame = 1;
setInterval(function Play() {
if (request) request.abort();
request = $.ajax({
type: "POST",
url: "Default.aspx/GetNextFrame",
data: JSON.stringify({
CurrentFrame: _currentFrame
}),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
if (msg.d != "") {
$("#divPlayer").css("backgroundImage", "url(" + msg.d + ")");
_currentFrame++;
}
},
error: function (msg) {
var r = jQuery.parseJSON(msg.responseText);
alert(r);
}
});
}, 100);
</script>
在我後面的代碼我有這樣的:
[WebMethod]
public static string GetNextFrame(int CurrentFrame)
{
if (HttpContext.Current.Session["Clip"] == null)
{
HttpContext.Current.Session["Clip"] = Directory.GetFiles(@"C:\Portal\Catalogues\000EC902F17F\3\2013\10\6\10\657c2728-c6a5-41d8-bbdf-1815f5b37d5d");
}
string[] _files= (string[]) HttpContext.Current.Session["Clip"];
if (CurrentFrame < _files.Length)
{
string _filename = new FileInfo(_files[CurrentFrame]).Name;
string _imgURL = "\" A URL\"";
return _imgURL;
}
return "";
}
的形象 '扮演',但有一個閃爍。我認爲解決方案只是更新div背景的URL來解決這個問題?我和我仍然有閃爍。
請別人幫我。
感謝
通過ajax獲取幀將有延遲(=閃爍)。可能是一個糟糕的主意。此外,您的服務器端代碼與此問題無關。 –
@Diodeus那麼,有沒有辦法避免閃爍呢?此外,服務器代碼顯示我如何返回下一個網址,以防萬一有人問「我如何獲得下一個網址」?請解釋它爲什麼不相關?謝謝 –
問題在於你的方法本身,而不是你的服務器代碼正在執行。您需要客戶端上的所有動畫數據/圖像才能順利運行 - 而不是通過AJAX調用。 –