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

AS3 OOP Nervni Slom

[es] :: Flash :: AS3 OOP Nervni Slom

[ Pregleda: 3019 | Odgovora: 16 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

shedvel
Jobless Couch Bum
Kragujevac

Član broj: 70014
Poruke: 114
*.dynamic.sbb.co.yu.



Profil

icon AS3 OOP Nervni Slom08.11.2007. u 14:09 - pre 200 meseci
AS/Flash ravojem se bavim neko duze vreme, ali mi je koncept OOP prilicno stran ( iskreno nije me interesovao do izlaska AS3, kada sam shvatio prednosti OOP-a).

Dakle stvari stoje ovako, ova skripta ucitava XML bez parsovanja i tracuje ga u output ( barem to radi dok je koristim sa timelinea a ne kao package).

/**
* ...
* @author Shed
* @version 0.1
*/

package {
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.events.Event;

public class xmlload {
public var adr:URLRequest = new URLRequest("1.xml");
public var ldr:URLLoader = new URLLoader;
public var sad:XML;

public function xmlload() {
ldr.load(adr);
ldr.addEventListener(Event.COMPLETE, don);


function don (e:Event) {
sad = new XML(ldr.data);

return sad
}
}

}

}


Problem je sto kada je pozovem iz flasha sa :

var a:xmlload = new xmlload();
trace(a.sad);

output izbacuje "null" vrednost. Takodje u koliko pozovem trace(sad) unutar don (event handler za loaded event unutar funckije) dobijam traceovan XML u flashu. Sto znaci da ne znam da vratim vrednost "sad" iz klase u flash.



"Treba li da se smejem jer smesni su, . . .
. . . ili da placem jer je to sve sto jesu? "
 
Odgovor na temu

Vranac
Vranac Srdjan
Software developer
Novi Sad, Vojvodina

Član broj: 3493
Poruke: 353
*.dynamic.sbb.co.yu.

Jabber: vranac@elitesecurity.org
ICQ: 64150005
Sajt: www.linkedin.com/in/vrana..


+1 Profil

icon Re: AS3 OOP Nervni Slom08.11.2007. u 15:49 - pre 200 meseci
Fali ti event koji ce obavestavati listenere van te klase da je xml ucitan.
Tako da se trace desi tek kad se listener izvrsi (jer je obavesten da je loading zavrsen)
Idle mind is the devils playground, in my case it turned out to be an amusement park.

Sustina problema ove zemlje:
Legeonar_: Sto pre treba da shvatite da je EU propast i da se tamo mora raditi,a ne samo biti zaposlen.
http://www.elitemadzone.org/p1864861

Nobody Remains Virgin, Life Fucks Everyone
 
Odgovor na temu

shedvel
Jobless Couch Bum
Kragujevac

Član broj: 70014
Poruke: 114
*.dynamic.sbb.co.yu.



Profil

icon Re: AS3 OOP Nervni Slom08.11.2007. u 16:09 - pre 200 meseci
Hvala ti na pomoci, dodao sam "getter" funkciju koja se aktivira nakon ucitavanja XML-a, i sada radi OK.
"Treba li da se smejem jer smesni su, . . .
. . . ili da placem jer je to sve sto jesu? "
 
Odgovor na temu

Vranac
Vranac Srdjan
Software developer
Novi Sad, Vojvodina

Član broj: 3493
Poruke: 353
*.dynamic.sbb.co.yu.

Jabber: vranac@elitesecurity.org
ICQ: 64150005
Sajt: www.linkedin.com/in/vrana..


+1 Profil

icon Re: AS3 OOP Nervni Slom08.11.2007. u 16:14 - pre 200 meseci
Ajde postuj kod, to nije ono o cemu sam govorio. Cisto da vidim, jer ako sam te dobro razumeo, tvoja klasa opet ima sanse da ne radi kako treba.
Idle mind is the devils playground, in my case it turned out to be an amusement park.

Sustina problema ove zemlje:
Legeonar_: Sto pre treba da shvatite da je EU propast i da se tamo mora raditi,a ne samo biti zaposlen.
http://www.elitemadzone.org/p1864861

Nobody Remains Virgin, Life Fucks Everyone
 
Odgovor na temu

dimjas
Nis

Član broj: 107293
Poruke: 52
*.adsl-4.sezampro.yu.



Profil

icon Re: AS3 OOP Nervni Slom08.11.2007. u 19:01 - pre 200 meseci
Treba da koristis dispatchEvent u klasi - fja done, a u Main klasi koja bi trebalo da sadrzi instancu ove klase (pozeljno ali moze i u timeline) treba da koristis addEventListener. Procitaj malo o tome. Sa AS3 je mnogo lakse napraviti slanje objekata i napraviti custom event. Nadam se da ti je ovo donekle pomoglo.
 
Odgovor na temu

shedvel
Jobless Couch Bum
Kragujevac

Član broj: 70014
Poruke: 114
*.dynamic.sbb.co.yu.



Profil

icon Re: AS3 OOP Nervni Slom08.11.2007. u 19:06 - pre 200 meseci
Srdjane hvala ti puno na pomoci, ocigledno mi je stvarno potrebna. Naime cak sam se potrudio da uradim najsitnije detalje (event dispaching, event.target-ing umesto direktnog targeta) misleci da ce napravit razliku, ali nisu. Wll sada mogu da dobijem sadrzaj XML-a ako ga pozovem iz klase, ali ne i ako pousam iz Flash fila. HELPPP

evo koda klase:

package
{
import flash.events.EventDispatcher;
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.events.Event;

public class xmlload extends EventDispatcher{

private var _loader:URLLoader;

private var _xml:XML;

public function xmlload(path:String){

_loader = new URLLoader();
try{
_loader.load(new URLRequest(path));
}catch(e:Error){
trace("valjda nema file-a")
}
_loader.addEventListener(Event.COMPLETE,onLoadXml);
}

private function onLoadXml(event:Event):void{

_xml = XML(URLLoader(event.target).data)
//trace(_xml); OVAJ TRACE MI IZBACUJE SADRZAJ XML-a (radi)
dispatchEvent(new Event(Event.COMPLETE));
}

public function get xml():XML{
return _xml;
}
}
}



IZ flasha pokusavam da prisupim sadrzaju "xml" promenljiive kodom :
var a:xmlload = new xmlload("1.xml");
trace(a.xml);

ali i dalje dobijam "null".


"Treba li da se smejem jer smesni su, . . .
. . . ili da placem jer je to sve sto jesu? "
 
Odgovor na temu

shedvel
Jobless Couch Bum
Kragujevac

Član broj: 70014
Poruke: 114
*.dynamic.sbb.co.yu.



Profil

icon Re: AS3 OOP Nervni Slom08.11.2007. u 19:17 - pre 200 meseci
@ DIMJAS

Hvala ti na savetu, dodao sam dispacher, i novu klasu u main. I dalje ne mogu dobiti sadrzaj _xml promenjive kada je pozovem iz Flasha.

U osnovi meni je najlakse da ovo uradim iz timelinea kodom :

var xmlloader:URLLoader = new URLLoader();
var xmldata:XML = new XML();

xmlloader.addEventListener(Event.COMPLETE, LoadXML);

xmlloader.load(new URLRequest("1.xml"));

function LoadXML(e:Event):void {

xmldata = new XML(e.target.data);
trace(xmldata);

}

, ali bih zeleo da naucim OOP, posto je mnogo pregledniji metod sa aspekta razvoja vecih projekata.

Tako da je svaka pomoc u shvatanju "pass"-ovanja sadrzaja promenjivih izmedju klasa i fla-ova dobrodosla.
"Treba li da se smejem jer smesni su, . . .
. . . ili da placem jer je to sve sto jesu? "
 
Odgovor na temu

dimjas
Nis

Član broj: 107293
Poruke: 52
*.adsl-4.sezampro.yu.



Profil

icon Re: AS3 OOP Nervni Slom08.11.2007. u 19:47 - pre 200 meseci
super, sad je mnoogo bolje. A gde je addEventListener za tu instancu?
 
Odgovor na temu

shedvel
Jobless Couch Bum
Kragujevac

Član broj: 70014
Poruke: 114
*.dynamic.sbb.co.yu.



Profil

icon Re: AS3 OOP Nervni Slom08.11.2007. u 20:46 - pre 200 meseci
Ovaj.....
zar ne bi sama trace komanda trebala biti event koji ce mi vratiti sadrzaj promenjive iz klase?
tipa instanciram klasu : var test:xmlloader = new xmlloader(), a zatim zatrazim output sadrzaja _xml varijable kroz getter funkciju "xml" ovako: trace (test.xml)?

Pomoglo bi mi takodje ako mozes ispraviti moj kod tako da ovakav tip instanciranja vrati sadrzaj _xml varijable.

Hvala na pomoci.



"Treba li da se smejem jer smesni su, . . .
. . . ili da placem jer je to sve sto jesu? "
 
Odgovor na temu

Vranac
Vranac Srdjan
Software developer
Novi Sad, Vojvodina

Član broj: 3493
Poruke: 353
*.dynamic.sbb.co.yu.

Jabber: vranac@elitesecurity.org
ICQ: 64150005
Sajt: www.linkedin.com/in/vrana..


+1 Profil

icon Re: AS3 OOP Nervni Slom08.11.2007. u 22:10 - pre 200 meseci
Tvoja klasa xmlload
Code:

package 
{
    import flash.events.EventDispatcher;
    import flash.net.URLRequest;
    import flash.net.URLLoader;
    import flash.events.Event;

    public class xmlload extends EventDispatcher
    {

        private var _loader:URLLoader;

        private var _xml:XML;

        public function xmlload(path:String)
        {

            _loader = new URLLoader();
            try
            {
                _loader.load(new URLRequest(path));
            }
            catch (e:Error)
            {
                trace("valjda nema file-a");
            }
            _loader.addEventListener(Event.COMPLETE,onLoadXml);
        }

        private function onLoadXml(event:Event):void
        {

            _xml = XML(URLLoader(event.target).data);
            //trace(_xml); OVAJ TRACE MI IZBACUJE SADRZAJ XML-a (radi)
            dispatchEvent(new Event(Event.COMPLETE));
        }

        public function get xml():XML
        {
            return _xml;
        }
    }
}


tvoja klasa je ok.
Sta se desava u klasi?
Tvoja instanca URLLoadera krene da ucitava xml, kada ga ucita (uspesno) onda dize event
koji obavestava sve zainteresovane da je ucitavanje zavrseno i da je xml spreman za dalju obradu.
U tvom slucaju je to funkcija xmlload.
Kada uradis trace iz xmlload funkcije sve je ok, jer se trace desi tek kada je ucitavanje zavesno.
Medjutim kada uradis trace iz timelinea dodje do problema, jer ti instanciras klasu, i odmah trazis xml,
a niko nije rekao da je taj xml ucitan, ili uopste da je pocelo ucitavanje.


Timeline code:
Code:

import xmlload;

var a:xmlload = new xmlload("1.xml");

a.addEventListener(Event.COMPLETE, loadComplete);

function loadComplete(evtObj:Object):void
{
    trace(a.xml);
}

Sta se ovde desava?
stvorio si novu instancu klase i poceo ucitavanje, dodao si listener koji ce cekati Event.COMPLETE dogadjaj, to je funkcija loadComplete.
Kada se xml ucita, tvoja klasa ce dici event Event.Complete, a timeline ce ga onda uhvatiti, i TADA ces dobiti svoj xml
Idle mind is the devils playground, in my case it turned out to be an amusement park.

Sustina problema ove zemlje:
Legeonar_: Sto pre treba da shvatite da je EU propast i da se tamo mora raditi,a ne samo biti zaposlen.
http://www.elitemadzone.org/p1864861

Nobody Remains Virgin, Life Fucks Everyone
 
Odgovor na temu

shedvel
Jobless Couch Bum
Kragujevac

Član broj: 70014
Poruke: 114
*.dynamic.sbb.co.yu.



Profil

icon Re: AS3 OOP Nervni Slom08.11.2007. u 23:45 - pre 200 meseci
Srdjane,

Hvala ti nezimerno, objasnjenje mi je zaiste bilo neophodno ( nedostatak iskustva u radu sa OOP ), takodje hvala ti na kodu za timeline.

Nadam se da necu bit dosadan ako zatrazim jos samo jedno objasnjenje.
U timeline event-handle-ru:

function loadComplete(evtObj:Object):void
{
trace(a.xml);
}

na sta se odnosi Object, obzirom da ukoliko stavim evtObj:Event, kod i dalje funkcionise.

"Treba li da se smejem jer smesni su, . . .
. . . ili da placem jer je to sve sto jesu? "
 
Odgovor na temu

Vranac
Vranac Srdjan
Software developer
Novi Sad, Vojvodina

Član broj: 3493
Poruke: 353
*.dynamic.sbb.co.yu.

Jabber: vranac@elitesecurity.org
ICQ: 64150005
Sajt: www.linkedin.com/in/vrana..


+1 Profil

icon Re: AS3 OOP Nervni Slom09.11.2007. u 07:29 - pre 200 meseci
Dug dan, i 1 ujutru su losa kombinacija za pisanje koda :)

Trebalo je da bude
Code:

function loadComplete(evtObj:Event):void
{
    trace(a.xml);
}



Ako pogledas inheritance Event klase videces da je nastala iz Object klase.
Objekt klasa je osnovna klasa iz koje nastaju sve ostale klase u AS3.

Ako je evtObj:Object, loadComplete moze kao parametar da dobije
bilo koju klasu koja je nastala iz Object klase ili je nasledjuju (sto ce reci sve).

Ako je evtObj:Event, loadComplete moze kao parametar da dobije
samo one klase koje su nastale iz Event klase (ili je nasledjuju)

Idle mind is the devils playground, in my case it turned out to be an amusement park.

Sustina problema ove zemlje:
Legeonar_: Sto pre treba da shvatite da je EU propast i da se tamo mora raditi,a ne samo biti zaposlen.
http://www.elitemadzone.org/p1864861

Nobody Remains Virgin, Life Fucks Everyone
 
Odgovor na temu

dimjas
Nis

Član broj: 107293
Poruke: 52
*.adsl-1.sezampro.yu.



Profil

icon Re: AS3 OOP Nervni Slom09.11.2007. u 09:46 - pre 200 meseci
bas mi se svidja ova tema o Event klasi, pa posto svi pisete kod, malo cu i ja. Evo jedne klase koja ti moze pomoci :

package
{
/**
* @author dimjas
**/

import flash.events.*;

public class CustomEvent extends Event
{
public var evtObject:*;

public function CustomEvent(type:String,obj:*=undefined,bubbles:Boolean=false,cancelable:Boolean=false)
{
super(type,bubbles,cancelable);
evtObject=obj;

}
public override function clone():Event
{
return (new CustomEvent(type,evtObject,bubbles,cancelable));
}
public override function toString():String
{
return formatToString("CustomEvent","object","type","bubbles","cancelable");
}
}
}




kada zelis da je koristis : dispatchEvent(new CustomEvent("imeDogadjaja", staZelisDaSaljes));
primer: dispatchEvent(new CustomEvent("onSomeEvent", 12)) ili dispatchEvent(new CustomEvent("someOtherEvent", {ime:"nekoIme", broj:nekiBroj}));

E sada, ovo staZelisDaSaljes moze biti bilo kog tipa (evtObject:*)


I, na kraju, kada napravis instancu te klase i obavezno dodas i:
addEventListener("imeDogadjaja", imefje); (sto si zaboravio sinoc i ja mislila da ces se setiti, ali na srecu Srdjan ti je to lepo objasnio)

private function imefje(evt:CustomEvent) :void {
var str:String=evt.evtObject; // primer ako si poslao String
}


To je to, slanje objekta uz pomoc event. Probaj,dobro je za prosledjivanje




 
Odgovor na temu

Vranac
Vranac Srdjan
Software developer
Novi Sad, Vojvodina

Član broj: 3493
Poruke: 353
*.dynamic.sbb.co.yu.

Jabber: vranac@elitesecurity.org
ICQ: 64150005
Sajt: www.linkedin.com/in/vrana..


+1 Profil

icon Re: AS3 OOP Nervni Slom09.11.2007. u 10:42 - pre 200 meseci
Ajde molim vas koristite code tagove i postujte formatiran kod, da se lepo vidi :)
Idle mind is the devils playground, in my case it turned out to be an amusement park.

Sustina problema ove zemlje:
Legeonar_: Sto pre treba da shvatite da je EU propast i da se tamo mora raditi,a ne samo biti zaposlen.
http://www.elitemadzone.org/p1864861

Nobody Remains Virgin, Life Fucks Everyone
 
Odgovor na temu

shedvel
Jobless Couch Bum
Kragujevac

Član broj: 70014
Poruke: 114
*.dynamic.sbb.co.yu.



Profil

icon Re: AS3 OOP Nervni Slom09.11.2007. u 14:14 - pre 200 meseci
Hvala vam puno oboma, dzaba mi knige koje sam "uzajmio" sa neta (O'Reilly AS3 design patterns, AS3 cookbook, Adobe press gluposti itd..), obzirom da ne pokrivaju osnove koje ste mi ovde objasnili. Tema jeste zaista hmmmm inspirativna, i obzirom da je za razliku od 1 ili 2 AS3 sagradjen "from ground up" na unificarnom event sistemu, ovo stvarno pomaze. Obzirom da sam apsolutni pocetnik u OOP-AS3 necu moci puno da doprinesem, no postovacu sav kod koji razvijem =D


BTW @dimjas, i ti koristis "FlashDevelop" ? ( neverovatno dobar IDE za AS3 dev.)
"Treba li da se smejem jer smesni su, . . .
. . . ili da placem jer je to sve sto jesu? "
 
Odgovor na temu

dimjas
Nis

Član broj: 107293
Poruke: 52
*.adsl-3.sezampro.yu.



Profil

icon Re: AS3 OOP Nervni Slom09.11.2007. u 14:31 - pre 200 meseci
Izvinjavam se svim posetiocima ove teme zbog nekoriscenja taga za kod, ali koga zanima ono sto sam napisala, snaci ce se.

btw, moje ime je Jasmina (mislim da to ime ne pripada pod "momci") . Nadam se da se nisi razocarao i zelim ti da ubrzo otkrijes sve prednosti OOP-a.
 
Odgovor na temu

shedvel
Jobless Couch Bum
Kragujevac

Član broj: 70014
Poruke: 114
*.dynamic.sbb.co.yu.



Profil

icon Re: AS3 OOP Nervni Slom09.11.2007. u 14:58 - pre 200 meseci
hahahha naprotiv, ja tebi dugujem izvinjenje sto sam te svrstao u momke.

Takodje, zasto bih se razocarao? Evo upravo pokusavam da shvatim (cupam kosu grizem tastaturu i jednom recju ugrozavam integritet svog komjutera i zdravog razuma =D )principe dispatchEvent klase koristeci se tvojim primerom.

P.S. Shvatio sam da si dama nakon sto sam pogledao tvoju CustomEvent klasu, samo zena moze da napise kod koji ovoliko muci neciji um.
Naravno salim se. zaista sam zahvalan za svu pomoc koju si mi pruzila.
"Treba li da se smejem jer smesni su, . . .
. . . ili da placem jer je to sve sto jesu? "
 
Odgovor na temu

[es] :: Flash :: AS3 OOP Nervni Slom

[ Pregleda: 3019 | Odgovora: 16 ] > FB > Twit

Postavi temu Odgovori

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