【发布时间】:2015-11-01 12:29:41
【问题描述】:
我正在尝试创建一个幻灯片放映,在当前幻灯片完成之前加载下一张幻灯片。我有两个原型。一个用于显示当前幻灯片,然后一个用于加载下一张幻灯片。
它运行良好,直到我在幻灯片之间设置了 setTimeout() 以延迟。 NextSlide() 函数在 setTimeout() 之后调用自身,但是即使在 LoadNextSlide() 中成功加载并添加到 this.nextSlide 中,this.nextSlide 也是未定义的。
$(document).ready(function(){
//Set width and height of canvas
var width = $(document).width();
var height = $(document).height();
$("#MKslide").css({"width":width+"px","height":height+"px"});
slideShow = new SlideShow(width, height, "2d");
slideShow.LoadNextSlide(null);
slideShow.NextSlide();
});
function SlideShow(canvasWidth, canvasHeight, dimension){
//Creating the slideshow
}
SlideShow.prototype.LoadNextSlide = function(currentSlideNumber){
var data = $.parseJSON($.ajax({
type: "POST",
url: "/cms/php/request.php",
dataType: "json",
data: {slideNumber : currentSlideNumber},
async: false
}).responseText);
this.nextSlide = data;
alert(this.nextSlide.id);
}
SlideShow.prototype.NextSlide = function(){
alert(this.nextSlide.id);
this.currentSlide = this.nextSlide; //Swap to next slide.
if(beginsWithHTTP(this.currentSlide.data)){
this.image.src = this.currentSlide.data;
}
else{
this.image.src = "http://" + this.currentSlide.data; //Set the current slide.
}
this.LoadNextSlide(this.currentSlide.id); //Preload next slide
window.setTimeout(this.NextSlide,this.currentSlide.duration * 1000);//wait x seconds before swapping
}
【问题讨论】:
标签: javascript