Генератор вращающегося текста

Я нахожусь в процессе создания вращающегося текстового генератора. Генератор объединяет предложения (текст )из ряда массивов, визуально "перебирает" их и дополняет. Я подумал, что лучше всего создать Fiddle с базовой версией генератора в том виде, в каком я его сконструировал сейчас :

. Пояснение

Основные работы заключаются в следующем:

  1. Предложения определяются в отдельных массивах(Array1, Array2и Array3в скрипке)
  2. Определяется второй набор массивов, содержащий массивы, которые можно комбинировать (combo0. и combo1на скрипке)
  3. При нажатии кнопки «Создать» вызывается функция Generate, которая визуально циклически циклирует предложения из массива предложений(combo0[0]на скрипке)
  4. Эта функция зацикливается до тех пор, пока предложение не повторится 8 раз (var times = 8. на скрипке)
  5. Когда это сделано, функция вызывает предоставленную функцию обратного вызова. В этом обратном вызове снова выполняется 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, но сегодня у меня сбоит больше браузеров, чем когда-либо прежде, и я не могу понять, что делать.

8
задан c_kick 27 July 2012 в 14:22
поделиться