Flash XML i PHP - pierwsza przygoda
niedziela, 07 marca 2010 22:49
Troszkę z przymusu, troszkę z ciekawości rozpocząłem swoją przygodę z Flashem. Początki były dość nieciekawe, gdyż zostałem rzucony od razu na głęboką wodę - komunikacja Flasha z serwerem, + PHP, ewentualnie MySQL - ale to już bardziej tematyka PHP.
Spróbujemy wczytać dynamicznie zdjęcie do Flasha, podając ścieżkę do pliku przez XML (przy okazji nazwę zdjęcia i krótki opis jako atrybut).
W nowym pliku .fla tworzymy nowy pusty klip filmowy (Insert -> New Symbol -> Movie Clip) wybierając dla niego nazwę.
Klip nie zostanie wstawiony do obszaru roboczego, jednak pojawi się w bibliotece (Library).
Następnie tworzymy nową warstwę (actions), na której osadzimy akcje.
Na warstwie Layer 1 (poprzednio pustej) - przeciągamy klip filmowy do obszaru roboczego. Klip na obszarze roboczym musi mieć swoją nazwę instancji, aby móc uzyskać do niego dostęp z poziomu ActionScripta. W tym celu klikamy na klipie obszaru roboczego, i w ramce Właściwości (Properties) nazwę instancji (Instance Name) np. mc.
Następnie tworzymy klatkę kluczową na warstwie actions, wchodzimy do panelu ActionScript (F9) i tam wpisujemy:
var myXML:XML = new XML(); myXML.ignoreWhite=true;
myXML.load("http://localhost/load.php?id="+nrid);
myXML.onLoad = function(success) {
if (success) {
var myImage = myXML.firstChild.childNodes;
for (i=0; i<myImage.length; i++) {
var imageNumber = i+1;
var imageName = myImage[i].attributes.name;
var imageURL = myImage[i].firstChild.nodeValue;
loadMovie(imageURL, "imageLoader1");
nrid = nrid + 1;
}
}
};
Nadmienię że w powyższym przykładzie oczywiście próbujemy pobrać treść pliku XML wygenerowanego przez kod PHP, stąd myXML.load łączy się ze skryptem PHP.
Po tej operacji - przy bezbłędnym wczytaniu pliku XML - odpowiednie wartości (zgodnie z nazwami atrybutów pliku XML) wprowadzane są do myImage[i].
A oto plik generujący odpowiedni XML (przykładowy):
<?php $idd = $_GET['id'];
echo "<gallery>\r\n";
echo "<image name=\"fota 1\">c:/img/".$idd.".jpg</image>\r\n";
echo "</gallery>";
?>
To chyba tyle słowem wstępu.
c.d.n. :))

