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

ActionScript - xml.onLoad u klasi?

[es] :: Flash :: ActionScript - xml.onLoad u klasi?

[ Pregleda: 6095 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

arsa xx
Srdjan Arsic
Beograd

Član broj: 14203
Poruke: 452
80.93.225.*

ICQ: 247217004
Sajt: webdizajn.arsic.biz


Profil

icon ActionScript - xml.onLoad u klasi?16.10.2004. u 16:03 - pre 237 meseci
imam sledeci kod koji ne radi:

Code:

class News
{
    var newsXML:XML;
    
    function News ()
    {
        this.newsXML = new XML ();
        this.newsXML.onLoad = onLoadNews;
        this.newsXML.load ("news.xml");
    }
    
    function onLoadNews (ok)
    {
        if (ok)
        {
            var nt = this.newsXML.firstChild;
            trace ( nt.nodeName)
            if (nt.nodeName == "NEWSTICKER")
            {
                //....
                
            }
        }
    }
}


Kako da resim problem?

Flash komponenta za atraktivan prikaz vesti na sajtu:
www.flash-news-ticker.com
 
Odgovor na temu

arsa xx
Srdjan Arsic
Beograd

Član broj: 14203
Poruke: 452
80.93.225.*

ICQ: 247217004
Sajt: webdizajn.arsic.biz


Profil

icon Re: ActionScript - xml.onLoad u klasi?16.10.2004. u 21:15 - pre 237 meseci
Problem sam resio u medjuvremenu.

falilo:
1.var firstChild;
2.this.newsXML.ignoreWhite = true;

Da li postoji elegantnije resenje (u sklopu klase)?

evo koda:
Code:

class NewsTicker
{
    var newsXML:XML;
    var firstChild;
    
    function NewsTicker ()
    {
        this.newsXML = new XML ();
        this.newsXML.ignoreWhite = true; 
        this.newsXML.onLoad = onLoadNews;
        this.newsXML.load ("news.xml");
    }
    
    function onLoadNews (ok)
    {
        if (ok)
        {
            var nt = this.firstChild
            trace ( nt.nodeName);
            if (nt.nodeName == "NEWSTICKER")
           {
                //....
                
           }
        }
    }
}


Flash komponenta za atraktivan prikaz vesti na sajtu:
www.flash-news-ticker.com
 
Odgovor na temu

noviKorisnik
Dejan Katašić
Novi Sad

Član broj: 13216
Poruke: 4533
*.dialup.neobee.net.

Sajt: www.novikorisnik.net


+5 Profil

icon Re: ActionScript - xml.onLoad u klasi?16.10.2004. u 22:52 - pre 237 meseci
A ovo sada radi? Nije mi jasno kakvu vezu ima var firstChild. Rekao bih da je suvišna deklaracija. Jer se this.firstChild u onLoadNews odnosi na NewsTicker.newsXML.

Odnosno, onLoadNews je obrađivač događaja za instancu XML objekta a ovako izgleda i kao metod klase NewsTicker.

A ignoreWhite? Pa voleo bih da je po defaultu isključeno - XML.prototype.ignoreWhite = true - ali moguće je da mora ovako.
 
Odgovor na temu

arsa xx
Srdjan Arsic
Beograd

Član broj: 14203
Poruke: 452
80.93.225.*

ICQ: 247217004
Sajt: webdizajn.arsic.biz


Profil

icon Re: ActionScript - xml.onLoad u klasi?16.10.2004. u 23:31 - pre 237 meseci
Radi ali ni meni nije jasno bas zbog cega mora 'var firstChild'.
A takodje nije mi ni jasno kako u funkciji onLoadNews() ne mogu da pristupim ni jednoj funkciji klase.
A bas sam pazljivo iscitao help > as reference guide.
Nesto sam ocigledno propustio.
Flash komponenta za atraktivan prikaz vesti na sajtu:
www.flash-news-ticker.com
 
Odgovor na temu

arsa xx
Srdjan Arsic
Beograd

Član broj: 14203
Poruke: 452
80.93.225.*

ICQ: 247217004
Sajt: webdizajn.arsic.biz


Profil

icon Re: ActionScript - xml.onLoad u klasi?16.10.2004. u 23:50 - pre 237 meseci
Citat:
noviKorisnik:
....
Odnosno, onLoadNews je obrađivač događaja za instancu XML objekta a ovako izgleda i kao metod klase NewsTicker.
....


To je to, samo mi nije jasno kako da podatke vratim instanci glavne klase.
Flash komponenta za atraktivan prikaz vesti na sajtu:
www.flash-news-ticker.com
 
Odgovor na temu

noviKorisnik
Dejan Katašić
Novi Sad

Član broj: 13216
Poruke: 4533
*.dialup.neobee.net.

Sajt: www.novikorisnik.net


+5 Profil

icon Re: ActionScript - xml.onLoad u klasi?17.10.2004. u 00:41 - pre 237 meseci
Citat:
A takodje nije mi ni jasno kako u funkciji onLoadNews() ne mogu da pristupim ni jednoj funkciji klase.

Mogao bi verovatno ako bi rekao myNewsTicker.onLoadNews (true) pa bi se u tom slučaju this odnosilo na instancu klase a samim tim bi radile sve metode klase. Ali to nije predviđeno da se poziva tako, zar ne?

Ovako, probaj da napraviš referencu na objekat u konstruktoru:
Code:
function NewsTicker ()
{
    this.newsXML = new XML ();
    this.newsXML.ticker = this;
    this.newsXML.ignoreWhite = true;
    this.newsXML.onLoad = onLoadNews;
    this.newsXML.load ("news.xml");
}


Tako bi mogao u onLoadNews da pozivaš metod klase sa this.ticker.metod ().

Naravno, proveri, jer nisam radio nešto više Flash 2004 pa možda se ponegde ne ponaša baš kao što bi se dalo očekivati...

Probaj takođe da komentiraš var firstChild. Da li javlja neku grešku ako se izostavi deklaracija?
 
Odgovor na temu

arsa xx
Srdjan Arsic
Beograd

Član broj: 14203
Poruke: 452
80.93.225.*

ICQ: 247217004
Sajt: webdizajn.arsic.biz


Profil

icon Re: ActionScript - xml.onLoad u klasi?17.10.2004. u 11:14 - pre 237 meseci
Ovo sa referencom ne moze. Javlja gresku kad se izostavi > var firstChild.
>>> There is no property with the name 'firstChild'.
Flash komponenta za atraktivan prikaz vesti na sajtu:
www.flash-news-ticker.com
 
Odgovor na temu

arsa xx
Srdjan Arsic
Beograd

Član broj: 14203
Poruke: 452
80.93.225.*

ICQ: 247217004
Sajt: webdizajn.arsic.biz


Profil

icon Re: ActionScript - xml.onLoad u klasi?17.10.2004. u 12:29 - pre 237 meseci
Nasao sam jako dobro objasnjenje problema:

http://www.kirupa.com/web/xml/XMLspecificIssues3.htm
Flash komponenta za atraktivan prikaz vesti na sajtu:
www.flash-news-ticker.com
 
Odgovor na temu

noviKorisnik
Dejan Katašić
Novi Sad

Član broj: 13216
Poruke: 4533
*.dialup.neobee.net.

Sajt: www.novikorisnik.net


+5 Profil

icon Re: ActionScript - xml.onLoad u klasi?17.10.2004. u 13:33 - pre 237 meseci
Znači Delegati... Zanimljivo.

Koliko kontam, referenca bi mogla da prođe varkom kompajlera:this.newsXML ['ticker'] = this.
 
Odgovor na temu

utvara
Slobodan Utvić
Vivvo CMS lead developer, Spoonlabs
d.o.o. Beograd

Član broj: 677
Poruke: 87
*.sbb.co.yu
Via: [es] mailing liste

Jabber: utvara@elitesecurity.org
ICQ: 28140625
Sajt: utvara.blogspot.com


Profil

icon Re: ActionScript - xml.onLoad u klasi?17.10.2004. u 13:46 - pre 237 meseci
ax> A takodje nije mi ni jasno kako u funkciji onLoadXml() ne
ax> mogu da pristupim ni jednoj funkciji klase.

ax> A bas sam pazljivo iscitao help > as reference guide.

ax> Nesto sam ocigledno propustio.

Nisi, XML onLoad iskoci iz normalno ocekivanog skopa promenljivih.
Jedna varijanta koju ja redovno koristim je :

function a(){
var host = this;
var sender:XML;
var receiver:XML;

.....

receiver.onLoad = function(){
......
// promenjivam pristupas sa host. umesto this.
}
}

Imas dosta ljudi koje se jadaju zbog toga na netu. Cuo sam da je MM
izdala neko zvanicno resenje koje je komplikovano.

Zakljucak pametno resenje ne postoji.

MM vrlo nevesto uvodi OO u Flash (od izmisljanja tople vode u
prethodnim verzijama verijama i neki kompromisi u 2004).

poz. utvara

--
Sve najlepse,
Best regards,
Slobodan mailto:[email protected]
 
Odgovor na temu

utvara
Slobodan Utvić
Vivvo CMS lead developer, Spoonlabs
d.o.o. Beograd

Član broj: 677
Poruke: 87
*.sbb.co.yu
Via: [es] mailing liste

Jabber: utvara@elitesecurity.org
ICQ: 28140625
Sajt: utvara.blogspot.com


Profil

icon Re: ActionScript - xml.onLoad u klasi?17.10.2004. u 16:32 - pre 237 meseci
ax>
Code:


ax> class NewsTicker
ax> {
ax>     var newsXML:XML;
ax>     var firstChild;
ax>     function NewsTicker ()
ax>     {
ax>         this.newsXML = new XML ();
ax>         this.newsXML.ignoreWhite = true;
ax>         this.newsXML.onLoad = onLoadNews;
ax>         this.newsXML.load ("news.xml");
ax>     }

ax>     function onLoadNews (ok)
ax>     {
ax>         if (ok)
ax>         {
ax>             var nt = this.firstChild
ax>             trace ( nt.nodeName);
ax>             if (nt.nodeName == "NEWSTICKER")
ax>            {
ax>                 //....
ax>            }
ax>         }
ax>     }
ax> }
ax> 


Ubaci u onLoadNews liniju trace(this) kad uradis
test = new NewsTicker(); trace ce ti vratiti ...xyz.newsXML .

Problem je sto this u onLoadNews postaje newsXML kad se aktivira XML
load eventom. Gresku ti vraca kompajler jel ovako kako je napisano
onLoadNews je metod NewsTicker klase i onda ti on kulturno vraca da
nemas def firstChild.

Pravilan kod bi ti bio sledeci:

Code:

class NewsTicker
{
     var newsXML:XML;
     function NewsTicker ()
     {
         var host = this;
         this.newsXML = new XML ();
         this.newsXML.ignoreWhite = true;
         this.newsXML.onLoad = function(ok)
         {
             if (ok)
             {
                var nt = this.firstChild
                trace ( nt.nodeName);
                if (nt.nodeName == "NEWSTICKER")
                {
                    // this.nesto = ns.nodeValue;
                }
             }
         }
     }
     this.newsXML.load ("news.xml");
  }


Ja ne znam za elegantnije resenje.

--
Sve najlepse,
Best regards,
Slobodan mailto:[email protected]
 
Odgovor na temu

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
*.neobee.net.

Sajt: localhost


+5 Profil

icon Re: ActionScript - xml.onLoad u klasi?23.10.2004. u 12:20 - pre 237 meseci
ovaj, to sa čime se vi mačujete nema baš mnogo veze ni sa XMLom, ni sa makromedijom, a ni sa flešom, već sa načinom na koji objekti i metode funkcionišu u JSu (aka EcmaScript-u, aka ASu).

naime, dodela tipa:

objekat.događaj = funkcija;

faktički ubacuje funkciju u objekat, pa se this unutar nje odnosi na objekt (a ne na onaj kome originalna funkcija "logički" pripada "u kodu").


ovo se rešava tehnikom koju je utvara opisao, i koja se zove "closures" (potražite detalje)..

 
Odgovor na temu

[es] :: Flash :: ActionScript - xml.onLoad u klasi?

[ Pregleda: 6095 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

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