Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

XML sendAndLoad kako u AS3

[es] :: Flash :: XML sendAndLoad kako u AS3

[ Pregleda: 2015 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

zstevovich
Zoran Stevovic
Infogram
Beograd

Član broj: 51518
Poruke: 57
95.180.99.*



+3 Profil

icon XML sendAndLoad kako u AS310.05.2011. u 02:21 - pre 157 meseci
Ima li neko predstavu kako da ovaj primer primenim u AS 3.0, probao sam svasta, ocigledno predugo radim u AS 2.0, jednostavno bez koliko toliko ucenja ne mogu nista da ukapiram

Code:
var xmlGame:XML = new XML();
xmlGame.ignoreWhite = true;
xmlGame.onLoad = function(success:Boolean) {
    if (success) {
        var tip:String = xmlGame.childNodes[0].attributes.type;
    } else {
        trace("connection error");
    }
};
var serverLoad:LoadVars = new LoadVars();
serverLoad.sendAndLoad("http://127.0.0.1:8080/m.asp?cmd=login&uid"+myUID,xmlGame,"POST");

Zoran
 
Odgovor na temu

StarCraft
Rančić Milan
Beograd

Član broj: 164837
Poruke: 441
*.dynamic.sbb.rs.



+3 Profil

icon Re: XML sendAndLoad kako u AS310.05.2011. u 22:21 - pre 157 meseci
Nije mi baš jasno šta pokušavaš zapravo da postigneš?
Ako možeš okači i kako izgleda taj xml.
www.zeitgeistmovie.com - film koji mora svako da vidi! (free to download)
 
Odgovor na temu

MenOfHonor
Bojan Mihajlović
Beograd

Član broj: 118521
Poruke: 266
212.200.65.*



+28 Profil

icon Re: XML sendAndLoad kako u AS310.05.2011. u 23:30 - pre 157 meseci
Zorane, očigledno predugo koristiš AS2 i vreme je da pređeš na trojku. Da bi isto to napisao u AS3 trebaće ti malo više linija koda, a i može ti delovati kompleksnije jer u njemu ne postoji klasa LoadVars. Pa da krenemo:
Code:
XML.ignoreWhitespace = true;

Ovo ti je već poznato.
Prvo ćeš deklarisati promenljivu tipa XML (kao što si radio i u AS2), ali joj nemoj još dodeljivati vrednost jer ćeš to uraditi kada se xml fajl uspešno učita:
Code:
var xmlGame:XML;

Sada ćeš deklarisati dve promenljive tipa URLRequest i kreiraćeš instance URLRequest klase i kao parametar za xmlZahtev prosledićeš putanju do xml fajla i njegov naziv (ukoliko se nalazi u istom folderu kao i fla odnosno swf fajl napisaćeš samo njen naziv zajedno sa ekstenzijom), a za urlZahtev prosledićeš URL adresu:
Code:
var xmlZahtev:URLRequest = new URLRequest("xmlfajl.xml");
var urlZahtev:URLRequest = new URLRequest("http://127.0.0.1:8080/m.asp?cmd=login&uid"+myUID");

Zatim ćeš deklarisati dve promenljive tipa URLLoader i kreiraćeš instance URLLoader klase:
Code:
var xmlLoader:URLLoader = new URLLoader();
var urlLoader:URLLoader = new URLLoader();

Deklarisaćeš još jednu promenljivu tipa URLVariables i kreiraćeš instancu klase URLVariables:
Code:
var serverLoad:URLVariables = new URLVariables();

Sledeće na redu je dodavanje osluškivača događaja xmlLoaderu i urlLoaderu:
Code:
xmlLoader.addEventListener(Event.COMPLETE, xmlUcitan);
urlLoader.addEventListener(Event.COMPLETE, urlPoslat);

Ukoliko se xml fajl iz nekog razloga ne učita ili ako se URL ne pošalje dodaćemo još dva osluškivača događaja koji će pozivati pripadajuće funkcije u kojima ćemo prikazati grešku:
Code:
xmlLoader.addEventListener(IOErrorEvent.IO_ERROR, greskaUcitavanja);
urlLoader.addEventListener(IOErrorEvent.IO_ERROR, greskaSlanja);

Sledi definisanje metoda objekta URLRequest kojim će se proslediti promenljive:
Code:
serverLoad.promenljiva = xmlGame;
xmlZahtev.method = URLRequestMethod.POST;
xmlZahtev.data = serverLoad;


Kada se xml fajl uspešno učita pozvaće se funkcija xmlUcitan:
Code:
function xmlUcitan(e:Event):void
{
    xmlGame = new XML(xmlLoader.data);
    xmlGame.children()[0].attributes.type;
}
xmlLoader.load(xmlZahtev);


Kreiraćeš instancu XML klase kojoj ćeš kao parametar proslediti xml fajl koji se nalazi u xmlLoaderu (korišćenjem data svojstva URLLoader klase). Sada možeš iz te promenljive direktno pristupati tagovima, njihovom sadržaju, atributima i njihovim vrednostima, koristeći E4X sintaksu. Na kraju pozivamo load metodu URLLoader klase kojoj kao parametar prosleđujemo URLRequest objekt koji se nalazi u promenljivoj xmlZahtev, koja sadrži putanju do xml fajla.

Kada se URL uspešno pošalje pozvaće se funkcija urlPoslat:
Code:
function urlPoslat(e:Event):void
{
    trace("Poslato.");
}
xmlLoader.load(xmlZahtev);


Na samom kraju ukoliko je došlo do greške prilikom učitavanja xml fajla pozvaće se funkcija greska i prikazaće se greška:
Code:
function greskaUcitavanja(e:IOErrorEvent):void
{
    trace("connection error");
}


Code:
function greskaSlanja(e:IOErrorEvent):void
{
    trace("Dogodila se greška prilikom slanja.");
}

Pogledajte odličnu knjigu ActionScript 3.0: Visual QuickStart Guide na Safari Books Online unošenjem kupon koda TPJVJGA: https://ssl.safaribooksonline.com/safarienabled
Obavezno pogledati besplatan tutorijal "Installing Apache, MySQL, and PHP" na lynda.com: http://www.lynda.com/MySQL-5-t...che-mysql-and-php/77958-2.html
 
Odgovor na temu

zstevovich
Zoran Stevovic
Infogram
Beograd

Član broj: 51518
Poruke: 57
95.180.99.*



+3 Profil

icon Re: XML sendAndLoad kako u AS319.05.2011. u 23:34 - pre 157 meseci
Nisam bio u mogucnosti ovih dana da pokusam sa se povezem na server i probam da prokomuniciram preko AS3 koda koji si mi napisao u primeru, sada sam probao i vraca se connection error, sto ce reci slanje na server radi normalno i registrujem u bazi parametre (promenljive koje saljem), medjutim metoda load ne radi ali postoji nekoliko stvari koje ne mogu u ovom trenutku sam sebi da razjasnim:

za pocetak ne ucitavam podatke iz xml fajla (xmlfajl.xml) vec npr ako saljem npr.
var myUID:String="USRPWD000001";

127.0.0.1:8080/m.asp?cmd=login&uid=+"myUID" odgovor sa servera je na taj upit npr. <node type="scr1" x="0" y="0" value="back1.png" /> ali to nije xml (struktura jeste ali je fajl m.asp sa komandom cmd=login i parametrom myUID) vec kao query string 127.0.0.1:8080/m.asp?cmd=login&uid=USRPWD000001, sto ce reci ako u var xmlZahtev:URLRequest = new URLRequest("xmlfajl.xml"); upisem

var xmlZahtev:URLRequest = new URLRequest("127.0.0.1:8080/m.asp?cmd=login&uid=USRPWD000001"); vraca sledecu gresku:

Code:
TypeError: Error #1088: The markup in the document following the root element must be well-formed.
    at send_fla::MainTimeline/xmlUcitan()
    at flash.events::EventDispatcher/dispatchEventFunction()
    at flash.events::EventDispatcher/dispatchEvent()
    at flash.net::URLLoader/onComplete()


malo da budem odredjeninij nemam na serveru xml fajl vec odgovor koji ima strukturu xml fajla (<node></node>), ja sam do sada radio sa AS2.0 metodom sendAndLoad sam najnormalnije slao parametre na server i citao to sto vraca u xml formatu iako nemam xml fajl vec samo generisan xml odgovor iz ASP-a, u AS3.0 to ne umem nikako da izvedem :)

Zoran
 
Odgovor na temu

MenOfHonor
Bojan Mihajlović
Beograd

Član broj: 118521
Poruke: 266
212.200.65.*



+28 Profil

icon Re: XML sendAndLoad kako u AS320.05.2011. u 15:24 - pre 157 meseci
Kao što kompajler kaže greška je u xml fajlu koji se učitava, tj. nije dobro oblikovan (well-formed). Pretpostavljam da znaš šta ovo znači, ali nije na odmet da se podsetimo: svaki XML dokument trebalo bi da započne XML deklaracijom koja sadrži (barem) verziju XML-a koja se koristi, kao i koji se enkoding koristi (podrazumevano je "UTF-8"). Sledeće pravilo je da mora postojati samo jedan root tag, a između njega svi ostali elementi koji moraju imati početni i završni tag. Ukoliko je element samostalan (standalone), odnosno prazan (empty) i ne sadrži nikakav sadržaj kao ni završni tag, onda se zatvara korišćenjem kose crte i znakom "veće" (/>). Vrednosti atributa se moraju nalaziti između (jednostrukih ili dvostrukih) navodnika.
Ako je tvoj XML dobro oformljen onda bi problem mogao da bude u BOM-u (Byte Order Mark). BOM je nevidljivi karakter (#65279) kreiran na početku ASP ili PHP "echo" stringa da ukaže na redosled bajtova u višebajtnom (multibyte) tekstu. Actionscript XML ne uklanja BOM iz dolazećeg teksta. Možeš proveriti da li string koji dolazi sa strane ASP-a ima taj BOM karakter:
Code:
trace(XMLString.charCodeAt(0)); // output: 65279

Najjednostavniji način da rešiš ovaj problem je da uneseš sledeće:
Code:
XMLString= XMLString.replace( String.fromCharCode(65279), "");
myXML = new XML(XMLString);

Nadam se da ti je ovo pomoglo.

Pogledajte odličnu knjigu ActionScript 3.0: Visual QuickStart Guide na Safari Books Online unošenjem kupon koda TPJVJGA: https://ssl.safaribooksonline.com/safarienabled
Obavezno pogledati besplatan tutorijal "Installing Apache, MySQL, and PHP" na lynda.com: http://www.lynda.com/MySQL-5-t...che-mysql-and-php/77958-2.html
 
Odgovor na temu

zstevovich
Zoran Stevovic
Infogram
Beograd

Član broj: 51518
Poruke: 57
95.180.99.*



+3 Profil

icon Re: XML sendAndLoad kako u AS324.05.2011. u 00:18 - pre 157 meseci
Nece i nece, sve sto sam uspeo je da procitam kompletnu strukturu iz fajla ali dalje od toga ne mogu da mrdnem

Code:
XML.ignoreWhitespace = true;
var xmlGame:XML;
var xmlZahtev:URLRequest = new URLRequest("http://213.29.21.170:8080/jamp/m.asp?cmd=login&
uid=JAMP00000000000000000000000000000000000000000000000000000003");
var urlZahtev:URLRequest = new URLRequest("http://213.29.21.170:8080/jamp/m.asp?cmd=login&
uid=JAMP00000000000000000000000000000000000000000000000000000003");
var xmlLoader:URLLoader = new URLLoader();
var urlLoader:URLLoader = new URLLoader();
var serverLoad:URLVariables = new URLVariables();
xmlLoader.addEventListener(Event.COMPLETE, xmlUcitan);
urlLoader.addEventListener(Event.COMPLETE, urlPoslat);
xmlLoader.addEventListener(IOErrorEvent.IO_ERROR, greskaUcitavanja);
urlLoader.addEventListener(IOErrorEvent.IO_ERROR, greskaSlanja);
serverLoad.promenljiva = xmlGame;
xmlZahtev.method = URLRequestMethod.POST;
xmlZahtev.data = serverLoad;
function xmlUcitan(e:Event):void {
    trace(e.target.data);
}
xmlLoader.load(xmlZahtev);
function urlPoslat(e:Event):void {
    trace("Poslato.");
}
xmlLoader.load(xmlZahtev);
function greskaUcitavanja(e:IOErrorEvent):void {
    trace("connection error");
}
function greskaSlanja(e:IOErrorEvent):void {
    trace("Dogodila se greška prilikom slanja.");
}

Zoran
 
Odgovor na temu

MenOfHonor
Bojan Mihajlović
Beograd

Član broj: 118521
Poruke: 266
*.3gnet.mts.telekom.rs.



+28 Profil

icon Re: XML sendAndLoad kako u AS316.07.2011. u 09:47 - pre 155 meseci
Jesi li uspeo da rešiš problem? Ponovo sam se vratio na ovu temu i pogledao kod koji si poslao i očekivano je da neće da radi. Prvo, ti nisi naveo putanju do XML fajla iz koga hoćeš da pročitaš promenljive. Kao što sam ti ranije naveo u promenljivoj "xmlZahtev" nalazi se objekat URLRequest koji sadrži putanju do XML fajla:
Code:
var xmlZahtev:URLRequest = new URLRequest("xmlfajl.xml");

Drugo, kada hoćeš da pročitaš promenljivu koja se nalazi u XML fajlu moraš da sačekaš da se on prvo učita pa da tek onda pristupiš čvoru gde se nalazi par "promenljiva=vrednost":
Code:
function xmlUcitan(event:Event):void
{
    xmlGame = new XML(event.target.data);
    serverLoad.promenljiva = xmlGame.children()[0].attributes.type;
}
xmlLoader.load(xmlZahtev);

Najbolje bi bilo da postaviš taj XML fajl da vidim kako izgleda (ili bar taj deo gde se nalaze promenljive koje treba da učitaš) kako bi mogao da ti dam precizniji odgovor.
Pogledajte odličnu knjigu ActionScript 3.0: Visual QuickStart Guide na Safari Books Online unošenjem kupon koda TPJVJGA: https://ssl.safaribooksonline.com/safarienabled
Obavezno pogledati besplatan tutorijal "Installing Apache, MySQL, and PHP" na lynda.com: http://www.lynda.com/MySQL-5-t...che-mysql-and-php/77958-2.html
 
Odgovor na temu

[es] :: Flash :: XML sendAndLoad kako u AS3

[ Pregleda: 2015 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.