Drehbarer Textgenerator

8

Ich bin dabei, einen revolvierenden Textgenerator zu erstellen. Der Generator kombiniert Sätze (Text) aus einer Reihe von Feldern, "durchläuft" sie visuell und hängt sie an. Ich dachte, es wäre am besten, eine Fiddle mit einer Basisversion des Generators zu erstellen, wie ich es jetzt gebaut habe:

Erläuterung

Die grundlegenden Funktionen sind wie folgt:

  1. Sätze sind in separaten Arrays definiert ( Array1 , Array2 und Array3 in der Geige)
  2. Ein zweiter Satz von Arrays wird definiert, der die Arrays enthält, die kombiniert werden können ( combo0 und combo1 in der Geige)
  3. Wenn Sie auf die Schaltfläche 'Generate' klicken, wird die Funktion Generate aufgerufen, die die Sätze aus einem Array von Sätzen ( combo0[0] in der Geige)
  4. visuell durchläuft
  5. Diese Funktion wiederholt sich selbst, bis der Satz 8 mal durchlaufen wurde ( var times = 8 in der Geige)
  6. Wenn dies erledigt ist, ruft die Funktion die bereitgestellte Callback-Funktion auf. In diesem Callback wird Generate erneut ausgeführt, diesmal mit dem zweiten Array ( combo0[1] in der Geige)

Der Grund für den Rückruf ist, dass ich warten muss, bis der zyklische Effekt abgeschlossen ist, und dann weitermachen.

Das Problem

Während dies genau das tut, was ich brauche (und neben der Tatsache, dass ich sehr zweifelhaft bin, ob dies der Weg ist; ich fühle mich immer ein bisschen komisch, wenn ich eine Funktion schreibe, die sich selbst wiederholt), habe ich folgendes Problem :

In den Arrays combo definiere ich, welche der 'Satz'-Arrays mögliche Kombinationen sein können. Das funktioniert gut, wenn zwei Kombinationen sind, aber bei mehr als zwei habe ich ein Problem:

%Vor%

Ich müsste dies rekursiv neu schreiben, um die Möglichkeit eines combo -Arrays bestehend aus 3 oder sogar 4 Optionen zu berücksichtigen. Und wahrscheinlich wird dies das Skript brechen, wenn ein combo -Array nur 2 (oder 1) Arrays enthält.

Hier stehe ich fest. Das Hauptproblem ist, dass, wenn ich über das combo -Array, z. Mit einem .each (); wird die Funktion generate mehrmals synchron aufgerufen, so dass der gesamte "Zyklus" -Effekt verloren geht.

Ich habe versucht, verschiedene Schleifen zu schreiben, die die Array-Länge des gegebenen combo -Arrays berücksichtigen, aber ich habe heute mehr Browser als jemals zuvor abgestürzt, und ich kann nicht herausfinden, was zu tun ist.

>     
c_kick 27.07.2012, 13:50
quelle

2 Antworten

0

Ich habe es geschafft, es zu beheben. Etwas Zeit weg vom Bildschirm ist eine gute Sache.

Was ich getan habe, ist einen 'n' Zähler hinzuzufügen, der sich erhöht, wenn das Vielfache der times Variable erreicht wird, wodurch die Funktion die Iteration fortsetzen, aber vom nächsten Array aus ausgeben (siehe drittletzte Zeile) %Code%). Schließlich wird geprüft, ob noch Arrays übrig sind, um festzustellen, ob wir fertig sind. Wenn Sie fertig sind, schreiben Sie den Satz ein letztes Mal, führen Sie den optionalen Callback aus und geben Sie false zurück. Auf diese Weise akzeptiert die Funktion das gesamte Array und nicht nur das Subarray ( lists[n] im Gegensatz zu combo ):

%Vor%

Siehe die Arbeitsgeige hier: Ссылка

Ich hoffe, das hilft anderen!

    
c_kick 27.07.2012, 21:15
quelle
1

Dies sollte den Trick machen:

%Vor%     
Luka 27.07.2012 15:21
quelle

Tags und Links