Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 11 odgovora
  • 7.330 pregleda

Najnovija ↓

ActionScript - xml.onLoad u klasi? 16.10.2004. u 17:03 · pre 268 meseci #1
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?
Potpis
Flash komponenta za atraktivan prikaz vesti na sajtu:
www.flash-news-ticker.com
Re: ActionScript - xml.onLoad u klasi? 16.10.2004. u 22:15 · pre 268 meseci #2
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")
           {
                //....
                
           }
        }
    }
}

Potpis
Flash komponenta za atraktivan prikaz vesti na sajtu:
www.flash-news-ticker.com
Re: ActionScript - xml.onLoad u klasi? 16.10.2004. u 23:52 · pre 268 meseci #3
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.
Potpis
BoxUp
interesantna logička igra
Monty Hall paradoks - interaktivni demo
Re: ActionScript - xml.onLoad u klasi? 17.10.2004. u 00:31 · pre 268 meseci #4
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.
Potpis
Flash komponenta za atraktivan prikaz vesti na sajtu:
www.flash-news-ticker.com
Re: ActionScript - xml.onLoad u klasi? 17.10.2004. u 00:50 · pre 268 meseci #5
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.
Potpis
Flash komponenta za atraktivan prikaz vesti na sajtu:
www.flash-news-ticker.com
Re: ActionScript - xml.onLoad u klasi? 17.10.2004. u 01:41 · pre 268 meseci #6
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?
Potpis
BoxUp
interesantna logička igra
Monty Hall paradoks - interaktivni demo
Re: ActionScript - xml.onLoad u klasi? 17.10.2004. u 14:46 · pre 268 meseci #10
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]
Potpis
utvara is no saint
CV
>>Trenutni hobi
>>Dragon
Re: ActionScript - xml.onLoad u klasi? 17.10.2004. u 17:32 · pre 268 meseci #11
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]
Potpis
utvara is no saint
CV
>>Trenutni hobi
>>Dragon
Re: ActionScript - xml.onLoad u klasi? 23.10.2004. u 13:20 · pre 268 meseci #12
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)..
Potpis
blogče :: unescaped beta
  »
go-paste extenzija
  »
reč dana: backup
  »
bočne koalicije
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme