8.3. A feltöltött kép megjelenítése
Ismét nyissuk meg a Flashben egy új fájlt (pictnamesender.fla), a mérete legyen 460*90 pixel (mivel ez is a nyitott popup ablakunkban fog megjelenni). Hozzunk létre benne egy bezáró gombot (close_btn), és két dimanikus textfieldet (message_textfield, countdown_textfield) körülbelül az alábbi elrendezés szerint:
51. ábra
Ennek a fájlnak az egyetlen feladata, hogy php általi megnyitása során kapott
adatot (amit a pict_to_send változó tartalmaz
rögtön betöltődés után) egy localConnection objektum kapcsolaton keresztül
átadja az image_upload.swf -nek. Emellett azért némi minimális
ellenőrzést és kényelmi szolgáltatást is hozzácsapunk, hogy a felhasználó úgyahogy
képben, legyen hogy mi is történik éppen....
Az 'actions' layerre a következő kódot írjuk:
// néhány alapbeállítás
Stage.scaleMode = "noScale";
Stage.showMenu = false;
// alapmegjelenés meghatározása
close_btn._visible = 0;
countdown_textfield.text=""
message_textfield.text=""
// ablakbezáró gomb (*1)
close_btn.onRelease = function() {
getURL("javascript: self.close
()");
};
// automatikus ablakbezárás (*2)
cc = 5;
function count() {
countdown_textfield.text = cc+"
másodperc múlva";
cc--;
if (cc == 0) {
getURL("javascript:
self.close ()");
}
}
// localConnection objektum létrehozása (*3)
sendingLC = new LocalConnection();
// localConnection objektum kapcsolatának ellenőrzés a
küldés után (*4)
sendingLC.onStatus = function(infoObject) {
if (infoObject.level == "error")
{
message_textfield.text
= "Probléma adódott a "+pict_to_send+
" fájl adatátvitelénél, próbálkozz újra.";
close_btn._visible
= 1;
} else {
message_textfield.text
= "A "+pict_to_send+" fájl megjelenítésre kész";
close_btn._visible
= 1;
setInterval(count,
1000); //(*2)
}
};
//az adatok küldése a kapcsolaton keresztül (*5)
sendingLC.send("currentConnectionName", "localConnectDataCame",
pict_to_send);
*1 - kényelmi szempontból
készíthetünk egy, a popup ablakot bezárni hivatott gombot, hogy miután a
megfelelő visszajelzést megkapta, a felhasználó e módon is bezárhassa az
ablakot (megjegyzendő, hogy a "javascript: self.close ()" csak
javascriptből nyitott ablakok bezárására alkalmas)
*2 - amennyiben a képfájl nevének átadása sikeres volt, ezt a függvényt egy
setInterval -on keresztül meghívva késleltetetten tudjuk automatikusan bezárni
a böngészőablakot (jelen esetben ez 5 másodperc)
*3 - Ahhoz, hogy kommunikálhassunk egy már létező localConnection kapcsolaton
keresztül, itt is létre kell hoznunk egy localConnection objektumot (sendingLC)
*4 - a sendingLC objektum onStatus
függvénye fogja figyelni hogy sikerült-e a kapcsolatfelvétel a image_upload.swf
fájllal. Két lehetséges értékkel tud visszatérni: 'error', és 'status'.
Amennyiben nem sikerült a kapcsolatfelvétel (pld. mert időközben a user bezárta
a másik böngészőablakot), úgy hibaüzenetet küldünk, ha viszont igen, akkor ezt
jelezzük, és indítjuk az automatikus ablakbezárás függvényét.
*5 - és végül az egész folyamat lelke: a sendingLC objektum send metódusa a "currentConnectionName"
nevű kapcsolaton keresztül (emlékezzünk, hogy a így neveztük el a
kapcsolatot az image_upload.swf fájlban is) fogja utasítani a fogadó fájlt,
hogy futtassa a "localConnectDataCame"
függvényt, amihez paraméterként a pict_to_send
változót küldi (ami ugyebár a képfájl neve.)