Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 19-01-2006, 18:52   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2005
Beiträge: 61
Question Verzeichnis lesen

Ich möchte folgendes erreichen: Ich schicke an ein PHP-Skirpt ein Verzeichnisnamen. Dieses PHP - Script gibt mir dann als array die Anzahl und den Inhalt des Verzeichnis in Form von z.B.

root folder
sub root folder 1
sub root folder 1.1
filename a
filename b
filename c
sub root folder 1.2
filename a
sub root folder 2
filename a
sub root folder 1.1
filename a

zurück. Ich weis inzwischen auch das man dieses über loadVars einlesen muss. Nur ich verstehe einfach nicht wie man die Informationen aus loadVars extrahieren kann. Ein kleines Beispiel würde mir wahrscheinlich verständnishalber auf die Sprünge helfen.
Sascha Laurent ist offline   Mit Zitat antworten
Alt 19-01-2006, 20:32   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
PHP-Code:
<?php
$folder
="root folder";
echo 
"&folder=".$folder."&";
?>
ActionScript:
  1. lv = new LoadVars();//neues Objekt instanziieren
  2. lv.onLoad = geladen;//diesem Objekt eine Callbackfunktion zuweisen, die dann die Rückgabewerte erhält
  3. lv.sendAndLoad("meineDatei.php",lv,"POST");//und den HTTP-Request starten
  4.  
  5. function geladen(erfolgreich) {
  6.         if(erfolgreich) {
  7.                
  8.                 trace("this.folder="+this.folder);//Variableninhalt im Testmodus ausgeben lassen
  9.         }
  10.         else {
  11.                 trace("Fehler beim Laden");
  12.         }
  13. }
  Mit Zitat antworten
Alt 20-01-2006, 03:18   #3 (permalink)
Neuer User
 
Registriert seit: Oct 2005
Beiträge: 61
Erstmal herzlichen Dank für deine Hilfe. Wenn ich aber deine Angaben test, dann erhalte ich ".$folder." ausgegeben? Für mich ist dieses im Augenblick etwas fragwürdig.

Ich bekomme aber folgendes nicht zum laufen (bzw. genauer gesagt funktioniert im dynamischen Textfeld wird undefined angezeigt)

Code:
  // Daten an PHP senden
  lv            = new LoadVars();
  lv.dir       = "/folder1";
  lv.onLoad = geladen;             // Callback Funktion

  lv.sendAndLoad("test.php",lv,"POST");//und den HTTP-Request starten

function geladen(erfolgreich) {
  if (erfolgreich) {
	txtField.text = this.files;
  } else {
	txtField.text = "Fehler beim Laden";
  } 
}
PHP-Code:
<?php
$files 
"";
$count 0;

if (
is_dir($dir)) {
  if (
$dh opendir($dir)) {
    while ((
$file readdir($dh)) !== false) {
      if ((
$file != ".") && ($file != "..") && (is_dir($file)===false))  {
        if (
$count == 0) {
          
$files "$dir$file";
        } else {
          
$files "$files;$dir$file";        }

        
$count++;
      }
    }
    
closedir($dh);
  }
}
?>

Geändert von Sascha Laurent (20-01-2006 um 03:23 Uhr)
Sascha Laurent ist offline   Mit Zitat antworten
Alt 20-01-2006, 03:57   #4 (permalink)
Banned
 
Benutzerbild von _level0
 
Registriert seit: Jan 2006
Beiträge: 849
frage:

wo gibst du daten an flash mittels echo zurück in deinem php?

.......... ohne mir den rest genauer angeschaut zu haben!
_level0 ist offline   Mit Zitat antworten
Alt 20-01-2006, 04:13   #5 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
Wenn ich aber deine Angaben test, dann erhalte ich ".$folder." ausgegeben?
Aber nicht im Flash-Script... Die Variable wird mit dem echo-Befehl an das Flash-Script zurückgeschickt und vom LoadVars-Callback in Empfang genommen.
  Mit Zitat antworten
Alt 20-01-2006, 09:18   #6 (permalink)
Neuer User
 
Registriert seit: Oct 2005
Beiträge: 61
Ahh, der liegt als das Geheimnis. Werds gleich ausprobieren. Danke für eure Hilfe.
Sascha Laurent ist offline   Mit Zitat antworten
Alt 20-01-2006, 12:45   #7 (permalink)
Neuer User
 
Registriert seit: Oct 2005
Beiträge: 61
Fragen über Fragen

Ich habe es jetzt dank eurer Hilfe hinbekommen, das Verzeichnis zu ermitteln. Ich habe meine Flash jetzt dahin abgeändert, das ich eine eigenes MovieClip in der Bibliothek erzeugt habe und dieses dann auf die Bühne gezogen habe. Aus Testzwecken habe ich das ActionScript wie folgt geändert:

Code:
defaultWidth  = 50;
defaultHeight = 70;

// Daten aus Verzeichnis an PHP senden
lv        = new LoadVars();
lv.dir    = "./folder1/";
lv.onLoad = geladen;             // Callback Funktion

lv.sendAndLoad("test.php",lv,"POST");//und den HTTP-Request starten

function geladen(erfolgreich) {
  if (erfolgreich) {
	images  = this.files.split(";");  
		
	for (var i=0;i<images.length;i++) {
		mc = this.createEmptyMovieClip(images[i], i);
  	    txtField.text = images[i];

		with (mc) {
			ID = i+1;
			
			_x = defaultWidth * i;
            _y = 0;

			loadMovie (images[i]); 
		}
	}
  } else {
	txtField.text = "Fehler beim Laden";
  } 
}
Was ich hiermit erreichen möchte ist einfach folgendes: Im verzeichnis "./folder1/". befinden sich n Bilder diese sollen ausgelesen und nebeneinander im Movieclip dargestellt werden. Der Pfad stimmt. Die Dateien werden auch ermittelt und stimmen. Die extraktion stimmt. Nur ich bekomme das bild einfach nicht zu gesicht. Woran liegt das? Was mache ich falsch?

Hierzu habe ich noch zwei Fragen:

1. Um die Dateinamen in alphabetischer Reihenfolge zu sortieren, wo würdet ihr diese Sortierung vornehmen in AS oder PHP? und wenn in AS wie kann ich dieses am schnellsten (einfachsten) Realisieren?

2. oben im Code habe ich zwei Variablen definiert defaultWidth und defaultHeight. Die Grafiken in dem Verzeichnis liegen in unterschiedlicher Grösse vor. Ich möchte diese aber proportional auf die Default Höhe/Breite anpassen wie kann ich dieses am einfachsten realisieren?

Herzlichen Dank noch einmal für eure schnelle und gute Hilfe.

Sascha

Geändert von Sascha Laurent (20-01-2006 um 12:47 Uhr)
Sascha Laurent ist offline   Mit Zitat antworten
Alt 20-01-2006, 13:44   #8 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
Was mache ich falsch?
Erstell die leeren MCs besser auf der Hauptzeitleiste und nicht im Callback-Objekt. Also nicht this.createEmptyMovieClip sondern _level0.createEmptyMovieClip und das auch in den Folgebefehlen berücksichtigen. Und bei defaultwidth auch den Objektpfad davorsetzen.

Zitat:
Um die Dateinamen in alphabetischer Reihenfolge zu sortieren,
Da die Bilder in Flash schon in einem Array liegen bieten sich die Array.sort und Array.sortOn-Methoden an, schau mal in die Flash-Hilfe.

Zitat:
die Default Höhe/Breite anpassen wie kann ich dieses am einfachsten realisieren?
Dann musst du nach dem loadMovie jeweils einen Preloader mitlaufen lassen, am besten mit der MovieClipLoader-Klasse. Nach dem Laden des Bildes kannst du dann die Breite und Höhe des Container-MCs mit der _width- und _height-Eigenschaft ermitteln und entsprechend den MC neu skalieren. Wurde hier aber auch schon häufiger erklärt ("Suchen" -> Stichwort bspw. "Bildergalerie").
  Mit Zitat antworten
Alt 20-01-2006, 14:18   #9 (permalink)
Neuer User
 
Registriert seit: Jul 2003
Ort: Berlin
Beiträge: 283
Zitat:
2. oben im Code habe ich zwei Variablen definiert defaultWidth und defaultHeight. Die Grafiken in dem Verzeichnis liegen in unterschiedlicher Grösse vor. Ich möchte diese aber proportional auf die Default Höhe/Breite anpassen wie kann ich dieses am einfachsten realisieren?
Du könntest auch in PHP die Eigenschaften des Bildes auslesen und diese mit an Flash übergeben, so kannst du schon gleich den MC auf die korrekte Grösse einstellen und musst nicht im Nachhinein neu skalieren.
__________________
ein mensch ohne macke ist kacke...
DaKinel ist offline   Mit Zitat antworten
Alt 20-01-2006, 14:18   #10 (permalink)
Neuer User
 
Registriert seit: Oct 2005
Beiträge: 61
Zitat:
Zitat von agedoubleju
Erstell die leeren MCs besser auf der Hauptzeitleiste und nicht im Callback-Objekt. Also nicht this.createEmptyMovieClip sondern _level0.createEmptyMovieClip und das auch in den Folgebefehlen berücksichtigen. Und bei defaultwidth auch den Objektpfad davorsetzen.
Ich verstehe noch nicht so ganz wie du das meinst.

Ausserdem habe ich (glaube ich zu haben) eine Verständnisproblem (Flash Hilfe konnte mir es auch noch nicht so richtig beantworten, oder ich bin im Augenblick einfach zu überarbeitet )

Worauf bezieht sich _level0?

Angenommen ich möchte dieses Movie später mehreren Movies überordnen z.B.

Hauptfilm
--- Movie 1
-------- Movie 1.1
--------------- Mein Movie <- hier soll er stehen

bezieht sich _level0 jetzt auf Movie 1.1 oder auf Hauptfilm?

Sascha
Sascha Laurent ist offline   Mit Zitat antworten
Alt 20-01-2006, 15:39   #11 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
_level0 (oder auch _root) ist die Hauptzeitleiste eines Flashfilms. Wenn auf der Hauptzeitleiste ein MC mit dem Instanznamen mc1 liegt, kann man ihn mit _level0.mc1 ansprechen. Wenn auch in mc1 eine MC-Instanz liegt, dann kann man die dann bspw. mit _level0.mc1.innererMC erreichen etc.
  Mit Zitat antworten
Alt 20-01-2006, 17:27   #12 (permalink)
Neuer User
 
Registriert seit: Oct 2005
Beiträge: 61
Images nicht nebeneinander zu bringen?

Ich habe die Flash jetzt soweit hinbekommen, dass die Zahlen angezeigt werden. Nur wenn ich im folgenden Code den _X - Wert ändere dann werden keine Bilder mehr angezeigt.

Code:
defaultWidth  = 50;
defaultHeight = 70;
imagedir = "./folder1/";

// Daten aus Verzeichnis an PHP senden
lv        = new LoadVars();
lv.dir    = imagedir;
lv.onLoad = geladen;             // Callback Funktion

lv.sendAndLoad("ImgFiles.php",lv,"POST");//und den HTTP-Request starten
_level0.createEmptyMovieClip("imagelist",1);

function geladen(erfolgreich) {
  if (erfolgreich) {
	  imagefiles    = this.files.split(";"); 
	
 	  if (imagefiles.length > 0) {
	     imagefiles.sort();

	     dirlen = imagedir.length;	   
	     anzahl = imagefiles.length;   
	   
	     for (var i=0;i<imagefiles.length;i++) {	   
		    mc = _level0.imagelist.createEmptyMovieClip(imagefiles[i].slice(dirlen, imagefiles[i].length), i);
 
            with (mc) {
 			  ID = i+1;
 		    
			  _x = 0; //50 * i; //_level0.imagelist[imagefiles[i-1].slice(dirlen, imagefiles[i-1].length)].x + defaultWidth;
			  _y = 0;
			
			  loadMovie (imagefiles[i]);
		  }
	   } 
	}
  } else {
	txtField.text = "Fehler beim Laden";
  } 
}
Angehängte Dateien
Dateityp: zip test.zip (6,0 KB, 7x aufgerufen)
Sascha Laurent ist offline   Mit Zitat antworten
Alt 20-01-2006, 18:56   #13 (permalink)
Neuer User
 
Registriert seit: Jul 2003
Ort: Berlin
Beiträge: 283
Hast du dir mal den _x-Wert ausgeben lassen?
__________________
ein mensch ohne macke ist kacke...

Geändert von DaKinel (20-01-2006 um 18:58 Uhr)
DaKinel ist offline   Mit Zitat antworten
Alt 20-01-2006, 23:31   #14 (permalink)
Neuer User
 
Registriert seit: Oct 2005
Beiträge: 61
Habe ich schon. Das Problem lag aber woanders.
Sascha Laurent ist offline   Mit Zitat antworten
Alt 21-01-2006, 04:50   #15 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Was mir noch aufgefallen ist:
PHP-Code:
anzahl imagefiles.length
for (var i=0;i<imagefiles.length;i++) { 
imagefiles.length macht natürlich nicht viel Sinn, weil so die Länge des Arrays in jedem Schleifendurchlauf neu berechnet werden muss. Außerdem hast du dafür ja die Variable "anzahl" gesetzt...

PHP-Code:
with (mc) {
               
ID i+1;
             
              
_x 0//50 * i; //_level0.imagelist[imagefiles[i-1].slice(dirlen, imagefiles[i-1].length)].x + defaultWidth;
              
_y 0
Die Positionierung ist überflüssig, neu erstellte MC werden sowieso auf den Nullpunkt gesetzt.
  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:35 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele