webForumDet fria alternativet

leta igenom XML dokument med for loop

Flashur Flash, Shockwave

3 svar · 269 visningar · startad av constig

Medlem sedan juni 20043 inlägg
Frågan#1

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..*

Medlem sedan maj 2003750 inlägg
#2

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

Medlem sedan juni 20043 inlägg
#3

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

Medlem sedan maj 2003750 inlägg
#4

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

129 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)