Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 06-01-2004, 21:20   #1 (permalink)
KMP
Neuer User
 
Registriert seit: Jan 2004
Beiträge: 11
Verzögerung in Funktion

Hallo,

Ich programmiere gerade eine Animation, bei der man ein Text und ein Muster hat. Ich möchte jetzt alle vorkommen des Musters im Text herausbekommen. Dazu lade ich mit: (siehe auch if Bed. und while Schleife )
this.createEmptyMovieClip("container", 1);
container._x = 18;
container._y = 36;
container.loadMovie("Symbol1.swf");
Symbol1: ||
Mein Problem ist nun folgendes:
Da das reinladen der Zeichen schön animiert werden soll brauche ich in der if Bed. eine eine Verzögerung, bevor das nächste Zeichen reingeladen wird.

Und so soll es aussehen:
a b r a k a d a b r a b r a b r a k a d a b r a
|| || || ...
a b r a k a d a b r a


function KM(Text, Muster) {
var n = Text.length;
var m = Muster.length;
var L = new Array();
var T = new Array(n-1);
var P = new Array(m-1);
// Array füllen
for (var y = 0; y<n; y++) {
T[y] = Text.charAt(y);
trace("Text:"+Text.charAt(y));
}
for (var z = 0; z<m; z++) {
trace("z:"+z);
P[z] = Muster.charAt(z);
trace("Zeichen:"+Muster.charAt(z));
}
var next = KMnext(_root.muster1);
var j = 0;
var xwert = 0;
var v = 0;
for (var i = 0; i<n; i++) {
while (j>0 && T[i] != P[j]) {
this.createEmptyMovieClip("container", 1);
container._x = 18;
container._y = 36;
container.loadMovie("Symbol1.swf");
j = next[j];
trace("next:"+j+" "+next[j]);
}
if (T[i] == P[j]) {
//bekommen in jedem Durchlauf noch einen anderen Namen(container) und werden in ein jeweils höheres Level geladen.
this.createEmptyMovieClip("container", 1);
container._x = 19;
container._y = 36;
container.loadMovie("Symbol2.swf");
j = j+1;
xwert = xwert+9.7;
}
if (j == m) {
L[v] = i-m;
v = v+1;
j = next[j];
}
}
return v;
}

function KMnext(Muster) {
var m = Muster.length;
var next = new Array(m-1);
var P = new Array(m-1);
for (var z = 0; z<m; z++) {
P[z] = Muster.charAt(z);
}
next[1] = 0;
var j = 0;
for (var i = 2; i<=m; i++) {
while (j>0 && P[i-1] != P[j]) {
j = next[j];
}
if (P[i-1] == P[j]) {
j = j+1;
}
next[i] = j;
}
return next;
}
KMP ist offline   Mit Zitat antworten
Alt 06-01-2004, 22:22   #2 (permalink)
~~~~~~~~~~~~
 
Benutzerbild von _geo_
 
Registriert seit: May 2002
Ort: AUSTRIA (OÖ)
Beiträge: 3.298
na ja also ne pause zwischen zwei ereignissen kannst du per setInterval() erzeugen aber wenn ich dich richtig verstanden hab dann möchtest du die zeichen von text und muster einzelln "reinladen/animiert" und dann vergleichen ob die var muster in der var text vorkommt oder nicht, und weiter ?? ähm.. kenn mich grad nicht recht aus...

Ps.:
// Array füllen
T = Text.split("");
P = Muster.split("");
// Array füllen

geht schneller

und mit [ AS ] as code [ /AS ] (ohne leerzeichen) kannst du AS in coderform anzeigen lassen

mfg geo
__________________
--- :P ---

Blog
Bei unerwünschten Nebenwirkungen zerreißen Sie die Packungsbeilage oder erschlagen ihren Arzt oder Apotheker
_geo_ ist offline   Mit Zitat antworten
Alt 07-01-2004, 10:59   #3 (permalink)
KMP
Neuer User
 
Registriert seit: Jan 2004
Beiträge: 11
Ich möchte eigentlich nicht die einzelnen Buchstaben animieren, sondern z.B. das Gleichheitszeichen (||), an dem man dann sieht, das die beiden Zeichen gleich sind. Diese Zeichen möchte ich als swf Datei reinladen, in der if Schleife. Er lädt mir aber alle auf einmal rein. Ich möchte das aber schön langsam haben.

Ich schaue mal was ich mit setInterval() machen kann, aber ich möchte die Funktion ja nicht alle n millisekunden neu aufrufen, sondern das Movieclip reinladen verzögern, bzw in ein bisschen warten lassen befor er das nächste mal in ein neues Vergleichszeichen reinlädt. Wie soll das also dann mit setInterval() funktionieren? Ich komme irgendwie einfach nicht weiter.

Gruß
KMP
KMP ist offline   Mit Zitat antworten
Alt 07-01-2004, 16:34   #4 (permalink)
~~~~~~~~~~~~
 
Benutzerbild von _geo_
 
Registriert seit: May 2002
Ort: AUSTRIA (OÖ)
Beiträge: 3.298
vieleicht hilft dir das weiter.
ActionScript:
  1. function formitdelay(millisek,wh){
  2.     _root.abcdefghii=wh5;
  3.     function aktion(){
  4.         _root.abcdefghii--;
  5.         if(_root.abcdefghii<=0){
  6.             clearInterval(interval);
  7.         }
  8.         //
  9.         // deine aktionen
  10.         trace("hallo");
  11.         //
  12.     }
  13.  
  14. interval = setInterval(aktion,millisek,funktion);
  15. }
  16.  
  17. formitdelay(1000,5);

mfg geo
__________________
--- :P ---

Blog
Bei unerwünschten Nebenwirkungen zerreißen Sie die Packungsbeilage oder erschlagen ihren Arzt oder Apotheker

Geändert von _geo_ (07-01-2004 um 16:36 Uhr)
_geo_ ist offline   Mit Zitat antworten
Alt 07-01-2004, 16:34   #5 (permalink)
KMP
Neuer User
 
Registriert seit: Jan 2004
Beiträge: 11
Ich stelle mal noch eine Beispieldatei mit dazu rein.

Vielleicht wird mein Problem dann ein bisschen klarer.
Angehängte Dateien
Dateityp: zip vergl4.zip (20,4 KB, 8x aufgerufen)
KMP ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 14:37 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele