我正在构建一个旋转文本生成器。生成器组合来自多个数组的句子(文本),在视觉上“循环”它们并附加它们。我认为最好使用生成器的基本版本创建一个小提琴,因为我现在已经构建了它:
解释
基本工作如下:
- 句子在单独的数组中定义(
Array1
,Array2
和Array3
小提琴) - 定义了第二组数组,包含可以组合的数组(
combo0
在combo1
小提琴中) - 按下“生成”按钮时,
Generate
调用该函数,该函数在视觉上从一组句子中循环句子(combo0[0]
在小提琴中) - 这个函数循环自己直到句子循环了 8 次(
var times = 8
在小提琴中) - 完成后,该函数调用提供的回调函数。在这个回调中,它
Generate
再次运行,这次使用第二个数组(combo0[1]
在小提琴中)
回调的原因是我需要“等待”循环效果完成,然后继续。
问题
虽然这正是我所需要的(而且我非常怀疑这是否是这样做的方法;我在编写一个自身循环的函数时总是觉得有点奇怪),但我有以下问题:
在combo
数组中,我定义了哪些“句子”数组可以是可能的组合。如果有两种组合,这很好用,但如果有两种以上,我有一个问题:
Generate(combo0[0], i, function(i) { //generate from first array element of combo0, callback to generating from second array of combo0
Generate(combo0[1], i, function(i) {
$('div#status').html('Done!'); //show status
$('input#generate').removeAttr("disabled"); //enable button
});
})
我将不得不递归地重写它以适应combo
由 3 个甚至 4 个选项组成的数组的可能性。如果一个combo
数组只包含 2 个(或 1 个)数组,这可能会破坏脚本。
这就是我卡住的地方。主要问题是,如果我循环遍历combo
数组,例如使用 .each();,该generate
函数会被同步调用多次,因此整个“循环”效果都会丢失。
我尝试编写各种循环,其中考虑到给定combo
数组的数组长度,但我今天崩溃的浏览器比以往任何时候都多,我不知道该怎么做。