Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 21-01-2004, 13:31   #1 (permalink)
KMP
Neuer User
 
Registriert seit: Jan 2004
Beiträge: 11
setInterval() funktioniert nicht

Ich möchte mit loadMovie immer wieder ein neues Zeichen in den Film laden. Um dies schön zu animieren(Funktion "lade()"), habe ich ein Interval gesetzt (zwischen dem laden), das eine Funktion aufruft("aktion"), die das Interval wieder löscht, und damit 2 sec angehalten werden soll.

Mein Problem ist, das setInterval erst ausgeführt wird wenn die ganzen Zeichen (Funktion schon ausgeführt) reingeladen sind.
Und das clearInterval wird auch nicht ausgeführt. Es wird immer wieder aktion aufgerufen.
Ich habe schon ewig rumprobiert, und finde einfach nicht raus warum es nicht funktioniert.

Hat von euch vielleicht eine Idee?

Gruss KMP

ActionScript:
  1. var xwert = 29;
  2. var pause;
  3. function KMP(Text, Muster) {
  4.     trace("T:"+Text+" M:"+Muster);
  5.     trace(typeof Muster);
  6.     trace(typeof Text);
  7.     var n = Text.length;
  8.     var m = Muster.length;
  9.     trace(n);
  10.     trace(m);
  11.     var L = new Array();
  12.     trace(typeof L);
  13.     // P = new Array(m-1);
  14.     var T = new Array(n-1);
  15.     var P = new Array(m-1);
  16.     trace(typeof P);
  17.     trace(typeof T);
  18.     // Array füllen
  19.     for (var y = 0; y<n; y++) {
  20.         T[y] = Text.charAt(y);
  21.         trace("Text:"+Text.charAt(y));
  22.     }
  23.     for (var z = 0; z<m; z++) {
  24.         trace("z:"+z);
  25.         P[z] = Muster.charAt(z);
  26.         trace("Zeichen:"+Muster.charAt(z));
  27.     }
  28.     var next = KMPnext(_root.muster1);
  29.     var j = 0;
  30.     var v = 0;
  31.     trace(P[j+1]);
  32.     trace(typeof P[j+1]);
  33.     trace(T[j+1]);
  34.     trace(typeof T[j+1]);
  35.     for (var i = 0; i<n; i++) {
  36.         trace("i:"+i+" und j:"+j);
  37.         trace("Typ(j):"+typeof j);
  38.         trace("T[i]:"+T[i]+" P[j]:"+P[j]);
  39.         while (j>0 && T[i] != P[j]) {
  40.             _root.Lade1();
  41.             j = next[j];
  42.             trace("next:"+j+" "+next[j]);
  43.         }
  44.         if (T[i] == P[j]) {
  45.             _root.Lade2();
  46.             j = j+1;
  47.             trace("j:"+j+" Typ:"+typeof j);
  48.             xwert = xwert+9.5;
  49.             trace("xwert"+xwert);
  50.         }
  51.         if (j == m) {
  52.             a = 1;
  53.             L[v] = i-m;
  54.             v = v+1;
  55.             j = next[j];
  56.             trace("j == m"+" "+"next:"+j+" "+next[j]);
  57.         }
  58.     }
  59.     return v;
  60. }
  61. function KMPnext(Muster) {
  62.     trace("KMPnext wurde aufgerufen");
  63.     var m = Muster.length;
  64.     var next = new Array(m-1);
  65.     trace(typeof next);
  66.     var P = new Array(m-1);
  67.     for (var z = 0; z<m; z++) {
  68.         trace("z:"+z);
  69.         P[z] = Muster.charAt(z);
  70.         trace("Zeichen von next:"+Muster.charAt(z)+" P[z]:"+P[z]);
  71.     }
  72.     next[1] = 0;
  73.     trace("next[1]:"+next[1]);
  74.     var j = 0;
  75.     for (var i = 2; i<=m; i++) {
  76.         trace(" P[i-1]:"+P[i-1]+"  P[j]"+P[j]);
  77.         while (j>0 && P[i-1] != P[j]) {
  78.             j = next[j];
  79.             trace("(while): j:"+j);
  80.         }
  81.         if (P[i-1] == P[j]) {
  82.             j = j+1;
  83.             trace("(if): j:"+j);
  84.         }
  85.         next[i] = j;
  86.     }
  87.     // nur schauen was next ist
  88.     for (x=1; x<m+1; x++) {
  89.         trace("next:"+next[x]);
  90.     }
  91.     return next;
  92. }
  93. var a = 1;
  94. // laden der Vergleichszeichen (Zeichen glaich)
  95. function Lade1() {
  96.     trace("Lade 1 wurde aufgerufen!!!");
  97.     pause = setInterval(aktion, 2000);
  98.     this.createEmptyMovieClip("container"+a, a);
  99.     eval("container"+a)._x = xwert;
  100.     eval("container"+a)._y = 36;
  101.     eval("container"+a).loadMovie("Symbol1.swf");
  102.     a = 1;
  103. }
  104. // laden der Vergleichszeichen (zeichen sind verschieden)
  105. function Lade2() {
  106.     trace("Lade 2 wurde aufgerufen!!!!");
  107.     trace("a:"+a);
  108.     // aktion wird nach 2sec aufgerufen
  109.     pause = setInterval(aktion, 2000);
  110.     this.createEmptyMovieClip("container"+a, a);
  111.     eval("container"+a)._x = xwert;
  112.     eval("container"+a)._y = 36;
  113.     eval("container"+a).loadMovie("Symbol3.swf");
  114.     a = a+1;
  115. }
  116. function aktion() {
  117.     // stopt pause
  118.     clearInterval(pause);
  119.     trace("2 Sekunden");
  120. }
KMP ist offline   Mit Zitat antworten
Alt 21-01-2004, 13:54   #2 (permalink)
nordlicht
 
Benutzerbild von phantura
 
Registriert seit: Apr 2002
Ort: Hamburg
Beiträge: 137
hi,

wie es für mich aussieht, hast du keinen kreislauf in deinem programm, der nacheinander die zeichen in den film läd.

ich würde eine funktion schreiben, die das laden steuert. das interval würde ich erst löschen, wenn alles geladen ist.

etwa so:
ActionScript:
  1. var controlstatus=0;
  2. var lade = 1;
  3. loadInterval = setInterval(controlLoad,2000);
  4. function controlLoad(){
  5. if(nocheinerzuladen){
  6.   if(controlstatus==0){
  7.        controlstatus=1; //PAUSE
  8.   }else if(controlstatus==1){
  9.       if(lade==1){
  10.          lade1();
  11.          lade=2;
  12.       }else if(lade==2){
  13.          lade2();
  14.          lade=1;
  15.       }
  16.      controlstatus=0;
  17.   }
  18. }
  19. else{
  20.  clearInterval(loadInterval );
  21. }
  22. }
phantura ist offline   Mit Zitat antworten
Alt 21-01-2004, 14:22   #3 (permalink)
KMP
Neuer User
 
Registriert seit: Jan 2004
Beiträge: 11
Mein Kreislauf ist in der Funktion KMP in der for Schleife. Dort wird zuerst geschaut, ob die verliechenen Buchstaben gleich(if) oder verschieden(while) sind. Je nachdem wird Lade1 oder Lade2 aufgerufen.

Zwischen dem Laden der einzelnen Zeichen in der for Schleife soll also nun eine Pause eingebaut werden. ich glaube ich kann das nicht so einbinden wie du das vorschlägst, ich versuche es aber mal.

Gruß KMP
KMP ist offline   Mit Zitat antworten
Alt 21-01-2004, 14:47   #4 (permalink)
nordlicht
 
Benutzerbild von phantura
 
Registriert seit: Apr 2002
Ort: Hamburg
Beiträge: 137
mit kreislauf meine ich, dass du den mc erst nach 2 sec. wartezeit wieder laden dürftest.

du kannst das laden nicht in einer for-schleife aufrufen, wenn du die mcs nacheinander laden willst.... im prinzip machst du das, da du den aufruf der lade-funktion in der schleife hast.

vielleicht versteh ich das auch falsch, und du willst gar nicht das swf im interval laden?!
phantura ist offline   Mit Zitat antworten
Alt 22-01-2004, 10:55   #5 (permalink)
KMP
Neuer User
 
Registriert seit: Jan 2004
Beiträge: 11
Ja das stimmt. Ich möchte das swf nicht im Interval laden.
Ich muß das laden der Zeichen ja kontroliieren können.
Ich wollte zwischen dem Laden der einzelnen Zeichen ein interval aufrufen, das einfach nichts tut.

Gruß KMP
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 06:40 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele