AS3 MC lementése Képként
2011-10-14T09:39:33+02:00
2011-10-18T15:02:26+02:00
2022-07-02T14:45:28+02:00
  • Így tűnt a leggyorsabbnak, és én ezt a módszert ismertem.

    Ellenben "szerencsére" előjött egy másik probléma:

    A szerverre feltéve összeomlik.

    *****/flash/save-my-image.php?filename=file%u21%v12 <- urllel a szerveren létrehozza a mappákat, viszont az SWF valamiért nem tudja elérni a PHPt.

    Most keresem a hibát, de attól félek, hogy nem tudom beállítani a képmentő osztály elérését.

    Elméletileg dinamikusnak kellene lennie, de nem akar működni, csak offline.
    Mutasd a teljes hozzászólást!
  • igazad van: nem kell az ImageSaver.as-hez hozzányúlni, hiszen a "filename"-paraméternek tetszőleges értéket átadhatsz,

    de hadd kérdezzem meg: miért nem "szabványos" Query string-et adsz át, miért saját elválasztójelet használsz és emiatt miért használod az explode-ot, a '%' jel használata azért is problémás, mert az a Percent-encoding jelölő karaktere, (normális Query string esetén a $_GET -tel hivatkozhatnál az egyes "paraméterekre", nem?)

    vagy én "nézek be" valamit?
    Mutasd a teljes hozzászólást!
  • Heuréka!

    Sikerült...A már beépített képkimentő osztályt átalakítva sikerült kiküszöbölnöm a problémát. És "csupán" csak a php fájlt írtam át ily módon:

    <?php $fileName = $_GET['filename']; $data = explode("%", $fileName); $file = $data[0]; $folder1 = $data[1]; $folder2 = $data[2]; print($file); print("</BR>"); print($folder1); print("</BR>"); print($folder2); mkdir("./" . $folder1, 0777); mkdir("./" . $folder1 ."/". $folder2, 0777); //? $fp = fopen( "./" . $folder1 ."/". $folder2. "/" . $file, 'w' ); fwrite( $fp, $GLOBALS['HTTP_RAW_POST_DATA'] ); fclose( $fp ); ?>

    Nagyon szépen köszönöm a segítséget, és a helyes irányba terelgetést!
    Mutasd a teljes hozzászólást!
  • Helló!

    Két megoldáson töröm a fejem :

    1. A már implementált képkimentővel dolgozva
    A phpnak úgy adnám áta paramétereket, hogy az minden információt tartalmazzon, például:

    var stageSaver:ImageSaver = new ImageSaver( "save-my-image.php" ); stageSaver.save ( stage, "stage01"+"#"+mappavaltozo1+"#"+mappavaltozo2);
    És a későbbiekben a php szkriptben ezt feldolgozva egy mkdir parancs segítségével létrehoznám a mapparendszert.

    2. Az általad javasolt osztályt használnám, amibe mindezek már meg vannak írva.

    ---

    A 2. verzióval az a probléma, hogy letöltöttem, de nem tudom hogyan implementáljam a fő kódomba.
    Az 1. verzióval az a probléma, hogy én sem tudom, hogy átalakíthatom-e, és hogy működik e majd a módszer.
    Mutasd a teljes hozzászólást!
  • ha az swf tudja, akkor talán a "legegyszerűbb"*, ha ezeket is ugyanúgy adod át a php szkriptednek, mint a fájlnevet, lsd. az ImageSaver.save() metódusában az urlRequest megadását (ha nem ismernéd, akkor nézz utána
    a Query string-nek), értelemszerűen ennek megfelelően a szerver oldali szkriptet is módosítanod kell, ehhez:
    PHP: $_GET - Manual, PHP: mkdir - Manual, ...,

    * - bár "szerencsésebb" lenne talán "multipart/form-data"-ként elküldeni az adatokat és nem vegyíteni a post/get-et... (de így talán kevésbé kell "variálnod"),

    szerkesztve: ez utóbbira például egy lehetséges megoldás:
    Upload BitmapData Snapshot to Server in AS3 | The choreography of color and code (lehetséges, hogy jobb lenne az ImageSaver osztály helyett azért is másikat használnod, mert nem olvastam el az ImageSaver felhasználói feltételeit, de lehet, hogy "nem módosíthatod", meg amúgy sem illik más kódjában "turkálni", csak akkor, ha "nincs más megoldás"),
    Mutasd a teljes hozzászólást!
  • Nos a paramétereket(2db paramétert) egy PHP+Html kódból kapja maga az SWF. Mindkettő egy-egy azonosító, hogy a felhasználó hol is jár az oldalon, illetve hogy ki is ő(egy úgynevezett computerazonosító)

    És a felhasználó által módosított MC-t egy olyan mapparendszerbe kell kimenteni, mint: computerazonosító/holjár/mcbőlkép.jpg

    Nekem maga a fájl nem igazán tartalmaz információt, de ha az egy egyszerű megoldás akkor akár névnek is megadhatóak a paraméterek, hogy később ebből táplálkozzon a saveimg.php. De szerintem(s remélem) ettől van egyszerűbb megoldás :)
    Mutasd a teljes hozzászólást!
  • csak érintőlegesen néztem bele a "stroep.nl" (Mark Knol) féle ImageSaver osztályba, ha jól látom, akkor csak a fájl nevét adja át magán a képen kívül, nyilvánvalóan magát a szerveroldali szkriptet át kell írnod (ami amúgy is jelenállapotában csak egy "váz", például semmilyen ellenőrzés nincs benne sem a kapott adatokra, sem a létrehozás sikerességére, stb.), de lehet, hogy a kliens oldalon is változtatnod kell (azaz az ImageSaver.as-t is módosítanod), attól függően, hogy valójában mi alapján "szelektálsz", azaz miért kerülne egyik kép az egyik könyvtárba, és miért kerülne a másik egy másikba? mi alapján döntesz? a kliens oldalon határozod meg és azt "paraméterként" átadod a szerveroldalnak, vagy esetleg a szerveroldal tudja "valahonnan"?

    én amikor hasonlót csináltam, akkor maga a fájl név alapján "szelektáltam", mivel az valójában tartalmazott egy "időbélyeget" (a létrehozás napját), és a szerveroldalon ezek alapján rakosgattam külön-külön könyvtárakba, azaz nem kellett külön paramétert átadnom, hanem a szerveroldali szkript a fájl neve után választotta (hozta létre) a célkönyvtárat,
    Mutasd a teljes hozzászólást!
  • Abszolút jogos a válaszod...

    Én is kerestem több imagesaver-t. Amit használtam azt elég rég használtam, és azt tettem amit nem illik. Relatíve kevés kód bújás után jöttem ide, hogy körbekérdezzek nincs e valami új jobb könnyebb egyszerűbb megoldás.

    Igen... Az az általam használt osztály... Abban tudsz segíteni, hogy azzal hogyan működik a mappán belülre mentés? Inkább a phpban kellene mahinálnom?
    Mutasd a teljes hozzászólást!
  • "
    A te módszeredre tudnál példát mutatni? (link/kódrészlet)
    "

    ne haragudj, de dögivel találhatsz ilyen kódot a net-en (például: google search: image save as3), és a saját megoldásom sem lenne "egyszerűbb", ezért nem látom értelmét annak, hogy leírjak ide saját kódot, továbbá itt szerintem a "körítésen" is sok múlik: mikor, hogyan, stb., meg a végén mit is akarsz a képekkel kezdeni (valójában a szerveroldallal hogyan kommunikálsz, ha már önálló fájlokba mented őket, akkor például csinálsz-e valamilyen "katalógust" hozzájuk (adatbázisban, stb.), vagy maga a képek könyvtárszerkezete implicite megadja azt, stb.),

    azt, hogy mit rontottál el, azt nem tudni ebből, főleg azért nem, mert az általad használt ImageSaver osztályról én nem tudok semmit,

    egyébként a kliens oldalon ennél "egyszerűbben" ("kevesebb, mint" 10 sor, már egy "kész" osztály felhasználása) nem fogod tudni megoldani, szerintem...

    szerkesztve:
    azt hiszem megtaláltam az általad használt osztályt, ez lenne az: AS3 ImageSaver Class v1.0 | Stroep Blog ?
    Mutasd a teljes hozzászólást!
  • Öhm... A mapparendszerhez átadandó paraméterek már meg is vannak. Fel is dolgoztam őket.

    A te módszeredre tudnál példát mutatni? (link/kódrészlet)

    Az én verzióm ez volt(lehet csak valamit elrontottam):

    var imageSaver:ImageSaver = new ImageSaver( "save-my-image.php" ); imageSaver.addEventListener ( Event.COMPLETE, onSaveComplete ); imageSaver.addEventListener ( IOErrorEvent.IO_ERROR, onSaveError ); imageSaver.save ( images[index],filename); function onSaveError( e:IOErrorEvent ):void { trace ( "Image save failed. Error while saving: " + e.text ); } function onSaveComplete( e:Event ):void { trace ( "Image save completed" ); }
    Mutasd a teljes hozzászólást!
  • a szerveroldal honnan tudja, hogy melyik mappába kerüljön a kép?

    nyilván "ezt" vagy valamilyen "azonosítót/kulcsot" át kell adnod, amiből tudja,

    nem tudom, hogy anno milyen "image saver"-t használtál/próbáltál, de annál "egyszerűbb" szerintem nincs, hogy az MC-ből "csinálsz" BitmapData, abból valamilyen kódfolyamot (lehet ez persze egyből "képformátum" (azaz jpg/png/akármi) is), és azt elküldöd s szerverre, a szerveroldalon fogadó szkript meg lementi... máshogy szerintem nem fog menni, legfeljebb azon gondolkodhatsz, hogy mit küldesz a szerverre, stb.
    Mutasd a teljes hozzászólást!
  • Dehogy dehogy... Semmi ilyesmiről nincs szó.

    Szóval a felhasználó egy interakcióval(gomb klikk) fogadná el az MC változtatásait egy a szerveren futó beágyazott SWFben.
    Mikor a fehasználló kattintott a kissé módosított MC mentésre kerül képként...magára a szerverre, egy bizonyos mapparendszerbe.

    Ne haragudj a "pongyola" fogalmazásért.
    Mutasd a teljes hozzászólást!
  • lejátszás közben szeretnél menteni fázisokat?

    szerintem biztonsági korlátozások miatt lokálisan ez felhasználói beavatkozás nélkül nem fog menni, azaz a jelenlegi, hivatalos lejátszónál azt nem fogod tudni megcsinálni egyszerűen, hogy különböző mappákba kerüljenek az egyes mc-k képei, anélkül, hogy azokat egyesével ki nem jelölnéd...

    annyit csinálhatsz persze, hogy magát a lementő programot külön írod meg, és a flash alkalmazásod azzal kommunikálhat, pld. socket-en keresztül, stb.

    esetleg pontosabban leírnád, hogy mit is szeretnél?
    - a flash alkalmazás futtatása közben menteni bizonyos mc-k képét?
    - a flash alkalmazásod hol fut? (böngészőben vagy önálló flash lejátszóban vagy valamilyen egyéb programban...)
    - a flash alkalmazásod lokális vagy letöltődött egy szerverről?
    ...stb...

    azt vélhetőleg te se gondolod komolyan, hogy egy interneten publikált flash alkalmazás, a kliens böngészőjében futtatva, annak a gépén, annak tetszőleges mappájához hozzáférhet anélkül, hogy a kliens "tudna" róla?
    Mutasd a teljes hozzászólást!
  • Sziasztok!

    Egy(és később több) MC(movieclip)-t szeretnék lementeni egy bizonyos mapparendszerbe... Tudtok rá valamilyen frappáns megoldást? Régebben használtam hozzá egy külső ASben megírt image-savert, ami most elővéve nagyon bonyolulttá vált, és ha jól látom a mapparendszerben való elhelyezést sem támogatja.

    Van e valami frappáns megoldásotok a problémámra?
    Mutasd a teljes hozzászólást!
abcd