之前,我组建了一个PowerPoint演示类型的网页,在幻灯片中的观点与各种动画和滑动。动画序列保存在一个数组中(最终从数据库中加载),并使用eval()调用JavaScript的等待动画完成一个动画
当单击幻灯片时,下一组动画被执行,但我需要每一个动画都要等到先前一个已经完成。所以对于下面的代码,当SeqNo是1时,我希望ShowSlideLeft等到HideSlideRight完成。
我已经看过回调和承诺,但我不能让他们的工作,因为我不能硬编码的链接事件。
var SeqNo;
$(document).ready(function() {
$('.slide').click(function (e) {
ActivateSequence(++SeqNo);
});
SeqNo = 0;
SetupSequence();
ActivateSequence(SeqNo);
});
function SetupSequence() {
Sequence = [];
Sequence[0] = [];
Sequence[0][0] = "ShowSlideLeft('S1');";
Sequence[1] = [];
Sequence[1][0] = "HideSlideRight('S1');";
Sequence[1][1] = "ShowSlideLeft('S2');";
}
function ActivateSequence(Seq) {
var action;
var element;
if (Seq < Sequence.length) {
for (var i = 0; i < Sequence[Seq].length; i++) {
eval(Sequence[Seq][i]);
}
}
}
function ShowSlideLeft(div) {
var showoptions = { "direction": "left", "mode": "show" };
$('#' + div).effect("slide", showoptions, 1000);
}
function ShowSlideRight(div) {
var showoptions = { "direction": "right", "mode": "show" };
$('#' + div).effect("slide", showoptions, 1000);
}
function HideSlideLeft(div) {
var showoptions = { "direction": "left", "mode": "hide" };
$('#' + div).effect("slide", showoptions, 1000);
}
function HideSlideRight(div) {
var showoptions = { "direction": "right", "mode": "hide" };
$('#' + div).effect("slide", showoptions, 1000);
}
非常感谢您的任何帮助。
嗯,你知道,每个动画将持续1000毫秒,为什么不把每个动画等待1000毫秒之前它允许开始(如果另一个先前已经开始,没有结束)? –