8.3. A feltöltött kép megjelenítése

iDevice ikon

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.)

Publikáljuk a mozinkat!