Zurück   Flashforum > Flash und Server > Flash und Datenbanken

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 11-03-2007, 20:34   #1 (permalink)
Neuer User
 
Registriert seit: Jun 2003
Beiträge: 377
php shuffle frage

hallo leute,

ich benutze dieses script, um eine anzahl von bildern zufällig auszugeben. dazu werden diese durchmischt. ich benutze dieses script für mehr als 2 dateien, um jeder datei eine durchmischte anzahl an bildern zu geben. sehr oft jedoch werden die bilder nicht ausreichend durchmischt, sodass oft die selber bilder am anfang stehen, trotz des shuffle.

meine frage: kann man das shuffle verdoppeln, oder verdreichfachen?
kann ichs einfach nocheinmal in das script einfügen, damit es doppelt gemischt wird?

PHP-Code:
<?php

echo '<?xml version="1.0" encoding="UTF-8"?>';
echo 
'<pics>';

# ---------------------------------------------------------------------------- #
# dein Bildverzeichnis
$imgDir 'bilder/art_galerie';

# hier kommen dann die 'fertigen' <pic>-nodes rein
$imgNodes = array();

# node-template
$imgNode_tpl '
    <pic picname="{PICNAME}" width="{WIDTH}" height="{HEIGHT}" link="{LINK}">{PICNAME}</pic>'
;

# Verzeichnis auslesen (nur .jpg)
foreach ( glob($imgDir.'/*.jpg') as $img ) {
    
    
# Breite u. Hoehe jedes Bildes in $width und $height abspeichern
    
list($width$height) = getImageSize($img);
    
    
# ...und pruefen --> wenn nicht korrektes Bildmass, geht's hier nicht weiter
    
if ($width != 135 || $height != 196) {
        continue;
    }
    
    
# wenn Bildmass korrekt, node f. jeweiliges Bild zusammenbauen und in Array schubsen
    
$imgNodes[] = str_replace(
        array(
'{PICNAME}''{WIDTH}''{HEIGHT}''{LINK}'),
        array( 
basename($img), $width$height$img ),
        
$imgNode_tpl
    
);
}

# Array mit den nodes durchmischen
shuffle($imgNodes);

# und nodes ausgeben
for ( $i 0$len count($imgNodes); $i $len$i++ ) {
    echo 
$imgNodes[$i];
}
# ---------------------------------------------------------------------------- #

echo '</pics>';
?>
danke!
__________________
OooO
stifflers mum ist offline   Mit Zitat antworten
Alt 11-03-2007, 21:46   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.326
Zitat:
Zitat von stifflers mum Beitrag anzeigen
sodass oft die selber bilder am anfang stehen
die funktion shuffle arbeitet gewiss korrekt.
was du offensichtlich beobachtest ist, dass das letzte bild der vorhergehenden mischung durchaus auch das erste bild der neuen mischung sein kann.

falls es das ist, was du beanstandest: dann musst du das letzte sortierereignis merken um das mit dem ersten der neuen mischung zu vergleichen und gegebenenfalls austauschen.

ist zwar in AS, aber selbe problematik:
http://www.seibsprogrammladen.de/fra...rithmen/Zufall
Zufallsreihenfolgen aneinander reihen

-------------
kommt natürlich auch darauf an, wie viele bilder du mischst. beim würfeln kommt die 1 z.b. manchmal erstaunlich oft und dann mal ewig lange wieder garnicht drann. dennoch stimmt der zufall. dieses phänomen tritt auf, egal ob du jetzt jeden würfelversuch zählst, oder jeden 10ten.
also du kannst natürlich shuffle beliebig oft aufrufen und es wird dir jedesmal eine andere mischung erzeugen. ändert aber nichts daran, das zufällig mehrmals die selbe nummer am anfang stehen kann.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (11-03-2007 um 22:21 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 12-03-2007, 21:38   #3 (permalink)
Neuer User
 
Registriert seit: Jun 2003
Beiträge: 377
ich weiß ja, aber erzähl das mal dem kunden...

ich hab da immer ca 20 bilder, trotzdem sind oft die selben gleichzeitig zu sehen. daher dachte ich, wenn ich bei jder datei eine andere shuffle-anzahl einfüge, der zufall noch größer sein muss...

sieh mal hier, das ist mein as-code für eine bilddatei, welche dann eine slidshow durchläuft. könntest du hier eines deiner zufallsscripte einbauen?ich weiß nich wie...

ActionScript:
  1. stop();
  2.  
  3. //####################################################
  4.  
  5. import script.ars_imaginis.SlideShow;
  6.  
  7. var tempxml:XMLNode;
  8.  
  9. var pic:XMLNode;
  10.  
  11. var link:XMLNode;
  12.  
  13. var amountNodes:Number;
  14.  
  15. var fehler;
  16.  
  17. var ordner:String = "bilder/ars_imaginis/";
  18.  
  19. //pfad zu einer statischen xml
  20. //var pfad:String = "images.xml";
  21.  
  22. //pfad für eine dynamische xml
  23. var pfad:String = "http://www.f.de/bla.php?remotePath=bilder/ars_imaginis&amp;cachekilla="+random(999);
  24.  
  25.  
  26. var aBilder:Array = new Array();
  27.  
  28. var aLink:Array = new Array();
  29.  
  30. var slideShow:SlideShow;
  31.  
  32. function initPics()
  33. {
  34.     //trace ("length: " + tempxml.length);
  35.     for (var i = 0; i<amountNodes; i++)
  36.     {
  37.         pic = meinXML.firstChild.childNodes[i].firstChild.nodeValue;
  38.         link = meinXML.firstChild.childNodes[i].attributes.link;
  39.         aLink.push(link);
  40.         aBilder.push(pic);
  41.         //
  42.         fehler += pic;
  43.         // ergibt die richtigen bilder 
  44.         fehler += aBilder[i];
  45.         // bilder nicht ins array eingefügt!!! 
  46.         fehler += "\n";
  47.     }
  48.     startShow();
  49. }
  50. var meinXML:XML = new XML();
  51. meinXML.ignoreWhite = true;
  52. meinXML.load(pfad);
  53. meinXML.onLoad = function(status)
  54. {
  55.     if (status)
  56.     {
  57.         tempxml = meinXML.firstChild;
  58.         amountNodes = meinXML.firstChild.childNodes.length;
  59.         fehler = "";
  60.         initPics();
  61.         delete meinXML;
  62.     }
  63.     else
  64.     {
  65.         fehler = "Leider keine Bilder vorhanden.";
  66.     }
  67. };
  68. startShow = function ():Void
  69. {
  70.     slideShow = new SlideShow(mcHolder, aBilder, aLink, 6, ordner, null);
  71. };
  72.  
  73. //#####################################################
  74.  

aber danke ersteinmal
__________________
OooO

Geändert von stifflers mum (12-03-2007 um 21:47 Uhr)
stifflers mum 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 00:23 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele