Anzeige

Schleife endlos durch Array laufen lassen

Schleife endlos durch Array laufen lassen | PSD-Tutorials.de

Erstellt von Arvit, 17.08.2009.

  1. Arvit

    Arvit Noch nicht viel geschrieben

    Dabei seit:
    19.06.2009
    Beiträge:
    8
    Geschlecht:
    männlich
    Ort:
    Hannover
    Software:
    Adobe Premiere, Adobe Photoshop, Adobe After Effects, Lightworks, Apple Logic, Inkscape
    Schleife endlos durch Array laufen lassen
    Hallo,

    habe foilgendes vorliegen: Ich habe ein Array, welches mit XML Daten gefüttert wird. Weche widerum die Daten für eine NetConnection und drei NetStreams liefert. Jedes Stream wird einem Video-Object zugefügt. In der SWF Datei wird jeder Stream klein angezeigt und in einem Video werden die Streams in einer Schleifen durchgelaufen, so dass alle paar Sekunden der nächste Stream ain diesem Video angezeigt wird. Mein Problem ist, dass bei folgender Schleife die Videos einmal wiederholt werden und dann ist Schluss. Wahrscheinlich bin ich nur zu dumm eine richtige Schleife zu bilden:mad:. Danke aber schon mal für Tipps, Lösungen und Verbesserungsvorschläge:




    var timer:Timer = new Timer(40, 500);
    timer.start();
    timer.addEventListener(TimerEvent.TIMER, wechsel);

    function wechsel(evt:TimerEvent):void {



    if(timer.currentCount == 150) { // für den Wechsel der Streams
    Streamnr++;
    nsKamera1.play( StreamArray[Streamnr].stream.toString() );
    location_txt.text = StreamArray[Streamnr].name.toString();
    location_txt.setTextFormat(textformat);
    timer = new Timer(40, 500);
    timer.start();

    if (Streamnr == StreamArray.length) {
    Streamnr = 0;

    nsKamera1.play( StreamArray[Streamnr].stream.toString() );
    location_txt.text = StreamArray[Streamnr].name.toString();
    location_txt.setTextFormat(textformat);

    }

    }

    }
     
    #1      
  2. miko0001

    miko0001 Noch nicht viel geschrieben

    Dabei seit:
    27.07.2009
    Beiträge:
    17
    Geschlecht:
    männlich
    Ort:
    Ratingen
    Software:
    GIMP Inkscape
    Kameratyp:
    Olympus 7070 digital
    Schleife endlos durch Array laufen lassen
    AW: Schleife endlos durch Array laufen lassen

    Grundsätzlich :
    - php-Code liest sich besser, wenn du ihn in die betreffenden
    Tags packst. (siehe Editor-Icon rechts oben)

    Zitat :
    PHP:
    1. var timer:Timer = new Timer(40, 500);
    2. timer.start();
    3. timer.addEventListener(TimerEvent.TIMER, wechsel);
    4.                        
    5.     function wechsel(evt:TimerEvent):void {
    6.    
    7.                        
    8.                    
    9.     if(timer.currentCount == 150) {      // für den Wechsel der Streams
    10.     Streamnr++;
    11.     nsKamera1.play( StreamArray[Streamnr].stream.toString() );
    12.     location_txt.text = StreamArray[Streamnr].name.toString();
    13.     location_txt.setTextFormat(textformat);
    14.     timer = new Timer(40, 500);
    15.     timer.start();
    16.                        
    17.     if (Streamnr == StreamArray.length) {
    18.     Streamnr = 0;                              
    19.  
    20.     nsKamera1.play( StreamArray[Streamnr].stream.toString() );
    21.     location_txt.text = StreamArray[Streamnr].name.toString();
    22.     location_txt.setTextFormat(textformat);
    23.    
    24.     }
    25.  
    26.     }
    27.                    
    28.     }    
    Und dann stellt sich mir die Frage :
    Benutzt du Eclipse oder ein anderes IDE ?
    Für Eclipse gibts ein tolles php-Framework hier :
    PHP Development Tools Project
    Damit kannst du deinen Code debuggen, indem
    du im Quelltext Stopmarken definierst, an denen
    Du z.B. deine Variablen auslesen kannst, etc.

    Zu Deinem Problem :
    So wie ich das sehe, hast Du eine IF-Abfrage, die allerdings nur einmal
    durchlaufen wird:
    Code (Text):
    1. ...
    2. IF (Argument) --> WENN TRUE
    3.        {Mach irgendwas;}
    4. ELSE
    5.        {Mach was anderes;}
    6. ... WEITER IM CODE
    7.  
    d.h. php prüft ob Bedingung wahr ist, tut dann das Erwartete,
    setzt danach aber den Code fort, ohne zurückzuspringen.
    Besser wäre m.E. :
    PHP:
    1.  
    2. $n = 0;
    3. WHILE ($n != 1)
    4.     {Mach was;
    5.         IF ($endbedingung == True) // Ausstieg aus Endlosschleife
    6.              {Verlasse Schleife OR EXIT ('Abbruch durch Benutzer')}
    7.     }
    8.  
    Hoffe ich erzähl keinen Mist. ;)

    LG Michael
     
    #2      
  3. rotschopflukas

    rotschopflukas Noch nicht viel geschrieben

    Dabei seit:
    13.03.2008
    Beiträge:
    35
    Geschlecht:
    männlich
    Schleife endlos durch Array laufen lassen
    AW: Schleife endlos durch Array laufen lassen

    Ich bin mir nicht sicher, ob das dein Problem löst, aber ich glaube die if-abfrage mit der du die "streamnr" zurücksetzt ist nicht ganz korrekt: du erhöhst die variable, bevor du etwas neues lädst. wenn der index für das array gleich der array länge funktioniert nichts mehr.
    Bei zwei elementen im array hast du die indices 0 und 1, die länge des arrays aber ist 2
    Bei drei Elementern hast du die indices 0, 1 und 2 und die länge 3
    und so weiter...
    Daher meiner meinung nach:
    Code (Text):
    1.  
    2. ...[COLOR=#000000][COLOR=#007700]                    
    3. [COLOR=Black]if (Streamnr == [B](StreamArray.length - 1)[/B])[/COLOR][/COLOR][COLOR=Black][COLOR=#007700]{
    4. [COLOR=Black]   Streamnr = 0;[/COLOR][/COLOR][COLOR=#007700]
    5. [COLOR=Black]};[/COLOR][/COLOR][/COLOR][/COLOR]
    6. ...

    Ich hoffe, das war verständlich...
    Versuchs mal,

    Lukas

     
    #3      
  4. Arvit

    Arvit Noch nicht viel geschrieben

    Dabei seit:
    19.06.2009
    Beiträge:
    8
    Geschlecht:
    männlich
    Ort:
    Hannover
    Software:
    Adobe Premiere, Adobe Photoshop, Adobe After Effects, Lightworks, Apple Logic, Inkscape
    Schleife endlos durch Array laufen lassen
    AW: Schleife endlos durch Array laufen lassen

    Hallo,

    danke erst einmal für alles. Ist übrignes AS3. Hab den Fehler auch gefunden.
    Stimmt, musste natürlich die Variabel Streamnr = 0 nach hinten versetzen, damit erst nach dem letzten durchlauf die zahl wieder auf 0 gesetzt wird, zudem musste ich nach dem der zweiten if schleife dem neuen Timer wieder den EventListener von oben anhängen, damit die Schleife wirklich endlos durchläuft:

    PHP:
    1. timer.addEventListener(TimerEvent.TIMER, wechsel);
    2.                        
    3.                         function wechsel(evt:TimerEvent):void {
    4.    
    5.                        
    6.                        
    7.                         if(timer.currentCount == 80) {            // erste if Schleife wird immer nach den Timer Ereignissen ausgeführt
    8.                         Streamnr++;                                // Streamn wird um 1 erhöht und dann abgespielt
    9.                         trace("Das ist = " + StreamArray[Streamnr].stream);
    10.                         nsKamera1.play( StreamArray[Streamnr].stream.toString() );
    11.                         location_txt.text = StreamArray[Streamnr].name.toString();
    12.                         location_txt.setTextFormat(textformat);
    13.                         timer = new Timer(40, 500);                // Timer wird neu erzeugt und so endlos wiedergegeben
    14.                         timer.start();
    15.  
    16.                        
    17.                             if (Streamnr == StreamArray.length-1) {        // zweite if Schleife prüft, ob das letzte Video erreicht ist
    18.                                                                         // ist dies der Fall, wird der aktuelle Stream erst abgespielt
    19.                             nsKamera1.play( StreamArray[Streamnr].stream.toString() );    
    20.                             location_txt.text = StreamArray[Streamnr].name.toString();
    21.                             location_txt.setTextFormat(textformat);
    22.                             trace("Das ist = " + StreamArray[Streamnr].stream);
    23.                            
    24.                             Streamnr = -1;                                // dann auf minus 1 gesetzt, da er in der ersten if-Schleife gleich um 1 erhöht wird
    25.                            
    26.                            
    27.                             }
    28.                             trace(timer.currentCount);
    29.                             timer.addEventListener(TimerEvent.TIMER, wechsel); // neuem Timer Objekt wird der EventListener und so die wieder die wechsel Funktion anghängt
    30.                            
     
    #4      
  5. emcirime

    emcirime Noch nicht viel geschrieben

    Dabei seit:
    03.10.2008
    Beiträge:
    42
    Geschlecht:
    männlich
    Ort:
    Wels - Österreich
    Software:
    Photoshop
    Kameratyp:
    Sony Alpha 300 DSLR
    Schleife endlos durch Array laufen lassen
    AW: Schleife endlos durch Array laufen lassen

    na ja das hat wenigstens mir was gebracht, DANKE :D
     
    #5      
Seobility SEO Tool
x
×
×