constigMedlem sedan juni 20043 inlägg på dom gamla glada dagarna då jag alltid publicerade mina flash filer i 6.0 varianten fungerande följande kod snutt utomordentligt då jag ville leta igenom ett större xml dokument efter just dom taggarna vars innehåll jag ville skriva ut i ett textfield
my_xml = new XML();
my_xml.load("book.xml");
my_xml.onLoad = function(success)
{
if(success)
{createTextField("books",1,50,50,100,200);
for(i=0;i<my_xml.childNodes.length;i++)
{
if(my_xml.childNodes[i].nodeName.toUppercase()=="BOOKS")
{
books.text += my_xml.childNodes[i].firstChild.nodeValue + "\n";
}
}
}
};
men sen jag började publicera i flash player 7.0 så funkar inte "if(my_xml.childNodes*.nodeName.toUppercase()=="BOOKS")" längre, finns det någon här som kan förklara varför för mej, kanske till och med kasta lite ljus över problemet..*
Därför att Flash MX 2004 alltid lägger till "this" framför om du inte anger annat(t.ex: _root). Så om du tar bort my_xml i början eller ändrar det till "this" så skall det funka.
eftersom onLoad är en "metod" till my_xml så pekar ju "this" på just my_xml.
if(this.childNodes[i].nodeName.toUppercase()=="BOOKS")
/Mirandir
constigMedlem sedan juni 20043 inlägg så här menar du?:
my_xml = new XML();
my_xml.load("book.xml");
my_xml.onLoad = function(success)
{
if(success)
{
createTextField("books",1,50,50,100,200);
for(i=0;i<this.childNodes.length;i++)
{
if(this.childNodes[i].nodeName.toUppercase()=="BOOKS")
{
books.text+=(this.childNodes[i].firstChild.nodeValue + "\n");
trace(this.childNodes[i].firstChild.nodeValue);
}
}
}
};
funkar fortfarande bara i flash player 6, i sjuan händer det ingenting
Skriver den ut rätt i trace() kommandot? Eller är den också "död"?
Tänk på att den förmodligen antar "this" framför books.text också. Dessutom tror jag att du måste peka createTextField på en tidslinje...
Men jag är inte 100% säker då jag inte äger MX 2004.
/Mirandir