feltöltve: 2004.01.06 | szerző: zsoltt | olvasva: 6554 alkalommal
Bizony nagyon sokszor olvastam itt a fórumon, hogy "lokálisan megy, de feltéve egy webszerverre már nem. Miért?" Ebben a dologban szeretnék segíteni egy nagyon egyszerű kis alkalmazás elkészítésével. Nevezzük nagyképüen Debug konzolnak :)
A konzolt egyszer kell megcsinálnunk, és bármely munkánkban hasznos társunk lehet, amikor nem tudunk igazán tesztelni. Mi nem megy? Megkaptam én azt a változót? Hoppá olyankor hivatkozok valamire amikor az még nem töltődött le? Hibás az xml amit kapok, vagy talán nem is kapok? Idétlen dolgok jönnek a szerverről? Sorolhatnám még, de úgy is tudja mindenki :) Nem lesz más dolgunk ezentúl, csak ezt a saját kozolt használni pont ugyanúgy, mintha a trace utasítást adnánk ki. A konzol egy önálló flash movie, ami egy browser ablakban folyamatosan futhat a háttérben.
Az egész tudomány lelke a LocalConnection() osztály. A LocalConnection() mint neve is mutatja arra való, hogy a lokális gépen futó x darab Flash movie tudjon egymással kommunikálni. Playerben-browserben-exeként, mindegy. A feladat két részből áll. Elkészíteni a konzolt, és írni egy picike kis kódot a meghívó múvinkba (main).
1. A Tracer :
Először csináljuk meg a konzolt (tracer). Nyissunk egy új movie-t, állítsuk be 500*300 as méretüre.(frameRate egyéni izlés szerint) Tegyünk bele egy dinamikus textFieldet ami multiline, van háttere+kerete, és selectable. Rendeljünk hozzá egy scrollBar komponenst. A textField neve legyen "field", a scrollBar-é legyen "sc". (Ne felejtsük el a targetTextField-et beállítani "field" - re) Állítsuk be akkorára őket, hogy pont kitöltsék a movie területét. A következő scriptet pedig szépen az első frame-re írjuk. Nem akarom túlmagyarázni, mivel 9 sor az egész(zárójelestül). Annyi a lényeg hogy egy függvény kiüríti a textFieldet (clear), egy pedig appendeli az új sort (draw). A kód végén kapcsolódunk a LocalConnection-nel.
A Tracer ActionScriptje :
//Létrehozunk egy LocalConnection objektumot. lc = new LocalConnection(); //Definiáljuk az ő függvényeit, amiket később bármikor meghívhatunk bármelyik Flash movieból. lc.clear = function () { //Itt a textField kiürítése történik. Teszünk bele valamit, hogy lássuk lefutott-e a függvény. field.text = "Clear All"+newline+"-------------------------------------------------------------------------";
} lc.draw = function (str) { //Rajzolunk. Először is a már meglevő szövegünkhöz hozzáadunk egy új sort, //majd amit ki akarunk iratni, és végül egy vonalat.(csak az átláthatóság miatt) field.text += newline+str+newline+"----------------------------------------------------------------------"; //Ezután már csak a scrollBár objektumnak kell szólni, hogy scrollozzon legalulra. sc.setScrollPosition(field.maxscroll) } //A LocalConnection objektumunkat beregisztráljuk tracer néven. Más Flash movie(k)ból ezen a néven fogjuk elérni kicsiny alkalmazásunkat. lc.connect("tracer");
2. Main movie:
A debugolandó flash mozink. Akármelyik mozinkba beilleszthetjük ezt a picike kis kódot. Lényege, hogy létrehozzuk a LocalConnection objektumot, és az ő "send" metódusát használva elérjük a tracer egyes függvényeit(clear,draw). Az "lcSender" függvényünk megfigyelhetően úgy fog viselkedni mint a trace utasítás egyébként. Érdemes a _root -ra tenni ezt a kódot, és akkor bárhonnan könnyen tudunk üzenni a tracernek. Pl : _root.lcSender("ezt írd ki");
A meghívó Flash movie (main) ActionScripje :
//Létrehozunk egy LocalConnection objektumot. lc = new LocalConnection(); //Lehet hogy tracerünk már régebb óta fut, ezért meghívjuk a clear metódusát, hogy törölje a régi bejegyzéseket.
lc.send("tracer","clear"); //Mindíg ezt a függvényt hívjuk meg ha valamit ki akarunk tracelni. Paraméter az a string amit ki akarunk írni. function lcSender (srt) { //Itt a protokolnak megfelelően használjuk a send metódust.(ez a LocalConnection saját metódusa) Az első paraméter a kapcsolat neve, a második a függvény neve, a harmadik pedig az amit át szeretnénk adni. lc.send("tracer","draw",srt); } //Íme egy példa a küldésre. lcSender("Start"); //Majd még egy, hogy látványosabb legyen. for (var i = 0;i<20;i++) { lcSender(i); }
És akkor a végén egy példa. A felső flash movieból üzenünk a tracernek.
Tracer :
Remélem hasznos segítőtárs tud lenni ez a kis cucc. Be kell vallanom, azért vártam ilyen sokáig a segédlet megírásával, mert bíztam benne hogy a Flash 7 ben már lesz normális futásidőben használható konzol (pl Java), de végülis nem lett. Így van a dolognak létjogosultsága. Hajrá mindenki, és "Flashre fel !" :)