Volledige versie bekijken : folder inhoud laden
rets
%Europe/Berlin %595 %2009, 15:17
Hallo mensen van flashfocus,
ik ben al aardig lang aan het zoeken naar een optie om alle plaatjes uit een folder te laden, zonder de naam van het plaatje op te geven, maar geen geluk.
Her en der lees je dan iets over XML en/of PHP, ook naar gezocht, maar heb zelf niet iets gevonden wat mij verder helpt.
De plaatjes moeten niet van een lokale map geladen worden, ik zet het online.
Ik vraag niet om een geheel werkende versie ofzo, maar een stap in de goede richting zou leuk zijn!
mvg rets :D
WickedMind
%Europe/Berlin %601 %2009, 15:25
Je praat over PHP, dus ga ik er vanuit dat je server PHP ondersteund.
Kijk hier eens naar: http://nl2.php.net/function.opendir
Roep een PHP pagina aan die de inhoud van een map leest en alle bestanden teruggeeft.
Ergens moet je ooit wel wat aangeven natuurlijk (de map met je afbeeldingen :) )
cornedor
%Europe/Berlin %605 %2009, 15:32
http://www.kirupa.com/developer/flashcs3/using_xml_as3_pg1.htm misschien heb je hier wat aan.
rets
%Europe/Berlin %606 %2009, 15:32
Ja met PHP wil ik dus de folder aanspreken en 'lezen', niet dat ik ook alle plaatjes apart moet gaan laden.
en het PHP script moet ik dus in Flash oproepen zodat ik de geladen content op beeld kan zetten in de swf, maar hoe dat moet weet ik dus niet echt 8~
WickedMind
%Europe/Berlin %633 %2009, 16:12
Flash gaan leren is een handig begin.
Bekijk de gegeven link voor meer informatie over het uitlezen van bestanden van een map met PHP.
Gebruik vervolgens de URLLoader class (flash.net package) om die PHP functie aan te roepen.
Gebruik Event.COMPLETE om te kijken wanneer de functie wat terug gegegeven heeft.
Gebruik de loader class om evt de afbeeldingen in te laden en zichtbaar te maken in flash, maar begin bijvoorbeeld eens met de data (resultaat) van de URLLoader class te tracen en te zien wat je precies binnenkrijgt.
Dit zal alsnog moeilijk voor je zijn, maar als je googled of de Help (F1) van Flash gebruikt kun je daar eenvoudig uit komen. Zo niet,... dan geef je precies aan wat je wel en vooral niet lukt... en dan wordt jij gericht geholpen door ons... handig :)
Bartj3
%Europe/Berlin %735 %2009, 18:38
wat een oplossing zou zijn is om met php alles uit te lezen, en daarmee een .xml genereren, je flash kant denkt dan gewoon een .xml uit te lezen terwijl het een php script is. Op die manier kan je eenvoudig het aantal bestanden uitlezen, de lokaties etc. Het is een techniek die ik vaak gebruik en wat (vind ik persoonlijk) erg goed werkt.
WickedMind
%Europe/Berlin %788 %2009, 19:55
Dat zeg ik toch? Behalve dat ik geen XML noem.
Of je nu een array o.i.d. meegeeft of een xml opmaakt... eindformaat is anders, maar content en manier van opvragen is niet anders.
Zal wezenlijk ook niet zo'n verschil maken aan de Flashkant.
rets
%Europe/Berlin %961 %2009, 00:04
Oh dus je kan niet met PHP een folder uitlezen en dan in flash met urlloader ofzo die .php aanspreken? Het moet via een XML die de informatie uit de PHP haalt?
e.l.dam
%Europe/Berlin %964 %2009, 00:09
Je roept in Flash een .php aan, welke de folder inhoud leest, daar een XML van genereert (echo <xml meuk>), en die xml sla je weer op in Flash.
Jan
%Europe/Berlin %969 %2009, 00:16
http://www.flashfocus.nl/forum/showthread.php?t=50026
Oh dus je kan niet met PHP een folder uitlezen en dan in flash met urlloader ofzo die .php aanspreken?
Tuurlijk wel.
Het moet via een XML die de informatie uit de PHP haalt?
Hoe je de namen van alle files uit die folder terugstuurt (vanuit php) naar Flash kies je zelf. PHP kan ze in de vorm van XML terugsturen wat meestal het handigste is.
Maar als jij ze als één lange string (gescheiden door komma's bijvoorbeeld) wil terugsturen kan ook. Dan moet je ze in Flash splitten op komma en in een Array steken of zo.
Groeten;
Jan
rets
%Europe/Berlin %510 %2009, 13:15
Oké, het begint een beetje duidelijker te worden hoe het precies hoort te werken, alleen de codes om het te laten werken kan ik niet voor elkaar krijgen..
Dit heb ik in script.php:
<?php
// header
header("Content-Type: text/xml");
// paden
$path = "img/";
$url = "http://www.pollewob.nl/flash/img/";
// dir openen
$handle = @opendir($path);
if (!$handle) die("<img />");
// XML outputten
print "<img>\n";
while (false !== ($file = readdir($handle))) {
if ($file[0] == ".") continue;
if (is_dir($path.$file)) continue;
echo "<img>" . $url . $file . "</img>\n";
}
print "</img>";
// dir sluiten
closedir($handle);
?>
en dit heb ik in mijn flash:
var xmlFotos:XML;
var xmlFotosList:XMLList;
var xmlFotosLoader:URLLoader=new URLLoader();
ladenxmlFotos();
function ladenxmlFotos():void {
xmlFotosLoader.load(new URLRequest("script.php"));
xmlFotosLoader.addEventListener(Event.COMPLETE, xmlFotosLoaded);
}
function xmlFotosLoaded(event:Event):void {
xmlFotos = XML(event.target.data);
xmlFotosList=xmlFotos.children();
//Geef hierna aan wat hij met de geladen data moet doen.
}
Gewoon gekopieerd en aangepast aan mijn mappen, hiermee krijg ik deze error:
TypeError: Error #1034: Afgedwongen typeomzetting is mislukt: kan "<img>
<img>http://www.pollewob.nl/flash/img/rood.png</img>
<img>http://www.pollewob.nl/flash/img/blauw.png</img>
<img>http://www.pollewob.nl/flash/img/groen.png</img>
</img>" niet omzetten in flash.net.URLRequest.
at MethodInfo-10()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/onComplete()
Zou iemand mij met wat extra uitleg kunnen en willen uitleggen waarom het niet werkt en hoe het dus wel gaat werken? Ik heb gegoogled naar Error #1034 binnen AS3, maar dat loopt nogal uiteen.
Alvast bedankt en bedankt voor de voorgaande hulp :D
Jan
%Europe/Berlin %516 %2009, 13:24
Met het script dat je hierboven toont zie ik niet in hoe je die error kan krijgen.
//Geef hierna aan wat hij met de geladen data moet doen.
Wat voor script heb je daar nu?
Groeten;
Jan
rets
%Europe/Berlin %523 %2009, 13:33
Niks nog, ik ging even kijken of ik hiermee wel of geen error kreeg, maar dat kan eraan liggen dat ik niks met de verkregen informatie doe?
Ik weet ook niet met welke functie ik de verkregen informatie kan gebuiken, moet ik het eerst nog weer in een array plaatsen of kan ik het in een addChild gebruiken?
Jan
%Europe/Berlin %531 %2009, 13:45
Afgedwongen typeomzetting is mislukt kan ...niet omzetten in flash.net.URLRequest.
Met script dat je hierboven toont kan je nooit die error krijgen. Je zet namelijk nergens iets om naar URLRequest. Je kan hooguit een error krijgen ivm een malformed xml.
Groeten;
Jan
rets
%Europe/Berlin %551 %2009, 14:14
Oké, dan lag het waarschijnlijk aan de PHP, heb nu een andere PHP code gebruikt en krijg nu dit:
TypeError: Error #1034: Afgedwongen typeomzetting is mislukt: kan "" niet omzetten in flash.net.URLRequest.
at MethodInfo-10()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/onComplete()
Ik denk dat dat komt omdat ik er niks mee doe? Zou je mij kunnen zeggen wat ik moet gebruiken om de informatie te gebruiken?
var xmlFotos:XML;
var xmlFotosList:XMLList;
var xmlFotosLoader:URLLoader=new URLLoader();
ladenxmlFotos();
function ladenxmlFotos():void {
xmlFotosLoader.load(new URLRequest("discover.php"));
xmlFotosLoader.addEventListener(Event.COMPLETE, xmlFotosLoaded);
}
function xmlFotosLoaded(event:Event):void {
xmlFotos = XML(event.target.data);
xmlFotosList=xmlFotos.children();
//Geef hierna aan wat hij met de geladen data moet doen.
}
Wat er dus onder "//Geef hierna aan wat hij met de geladen data moet doen." moet komen te staan, als het niet teveel moeite is :#
Jan
%Europe/Berlin %559 %2009, 14:26
var xmlFotos:XML;
var xmlFotosList:XMLList;
var xmlFotosLoader:URLLoader=new URLLoader();
ladenxmlFotos();
function ladenxmlFotos():void {
xmlFotosLoader.addEventListener(Event.COMPLETE, xmlFotosLoaded);
xmlFotosLoader.load(new URLRequest("http://www.pollewob.nl/flash/script.php"));
}
function xmlFotosLoaded(event:Event):void {
//xmlFotos = XML(event.target.data);
// xmlFotosList=xmlFotos.children();
trace(event.target.data)
}
Oké, dan lag het waarschijnlijk aan de PHP, heb nu een andere PHP code gebruikt en krijg nu dit:
Toon dan ook dat php script.
Groeten;
Jan
rets
%Europe/Berlin %577 %2009, 14:51
De PHP scripts:
Script.php
<?php
class imageHandler {
public function getImageList($path="img") {
if(file_exists($path))
{
$i1="jpg";
$i2="png";
$i3="jpeg";
foreach(array_diff(scandir($path),array('.','..')) as $f) {
if(is_file($path.'/'.$f) && (($i1)?ereg($i1.'$',$f):1) ||
(($i2)?ereg($i2.'$',$f):1) || (($i3)?ereg($i3.'$',$f):1) ) $l[]=$f;
}
return $l;
}
else return "Path do not Exists!";
}
public function ary2xml($arr, $d=0, $forcetag='', $file_name='') {
$data="<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n";
$data.="<images>\r\n";
for($h=0; $h<count($arr); $h++) {
$data.="<image nameI=\"".$arr[$h]."\" thumb=\"".$arr[$h]."\" />\r\n";
}
$data.="</images>";
if($file_name!='') {
@unlink($file_name);
$myFile = $file_name;
$fh = fopen($myFile, 'w');
fwrite($fh, $data);
fclose($fh);
return $file_name;
}
else return $data;
}
}
?>
Discover.php
<?php
include_once("script.php");
$tm=new imageHandler();
$data=$tm->getImageList("./");
echo($tm->ary2xml($data,0,'',"images.xml"));
?>
En in Flash heb ik jou stukje gekopieerd, krijg nog steeds dezelfde error (als ik het via internet check)
Link: http://www.pollewob.nl/flash/flash.swf
Als ik het in Flash run krijg ik deze trace:
<br />
<b>Warning</b>: fopen(images.xml) [<a href='function.fopen'>function.fopen</a>]: failed to open stream: Permission denied in <b>/home/pollewob/domains/pollewob.nl/public_html/flash/script.php</b> on line <b>31</b><br />
<br />
<b>Warning</b>: fwrite(): supplied argument is not a valid stream resource in <b>/home/pollewob/domains/pollewob.nl/public_html/flash/script.php</b> on line <b>32</b><br />
<br />
<b>Warning</b>: fclose(): supplied argument is not a valid stream resource in <b>/home/pollewob/domains/pollewob.nl/public_html/flash/script.php</b> on line <b>33</b><br />
images.xml
Kan die foutmelding op de website komen omdat ik permissies nog in moet stellen of ligt het daar niet aan?
Ik hoop dat de vragen nog een beetje duidelijk zijn met al die blokken code ertussen! :o
WickedMind
%Europe/Berlin %941 %2009, 23:35
Kan die foutmelding op de website komen omdat ik permissies nog in moet stellen of ligt het daar niet aan?
Hij geeft een foutmelding dat de permissies niet goed staan, dus dat klopt wel ja :)
Wat betreft die Foutmelding.
Deze geeft aan dat je een data-vorm met een bepaald type probeert om te zetten naar het Type URLRequest. Dat geeft een error als je "start-type" niet overeenkomt met het "resultaat-type".
In de Flash code die je laat zien is dit nergens het geval, zoals Jan al zei.
Dus je geeft niet exact door wat je precies aan code hebt of als resultaat terug krijgt.
Je XML code in je error-melding heeft ook 'img' tags... redelijk vreemd als je in je PHP script een 'image' tag aanmaakt.
Daarnaast roep je als URLRequest "script.php" aan... terwijl je discover.php aan zou moeten roepen, omdat script.php een class is die op zich zelf niks returned.
Dus tip: Order je informatie, zorg dat je de goede dingen aanroept, dat je rechten goed staan. En als je dan nog foutmeldingen krijgt... plaats dan hier de juiste code, in de juiste volgorde.
ps: Ik zie dat je een andere keer wel het goede script aanroept. Dan nog blijft de rest van bovenstaande gelden.
rets
%Europe/Berlin %950 %2009, 23:49
Oké ik ben er half uit, zit nog lekker in de trial & error periode, wil niet alles klakkeloos kopieren waardoor ik dus steeds alles verneuk en de gevolgen bekijk ;)
Bedankt voor de hulp iig!
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.