karis
16.08.2010, 00:20:15
mam problem z parsowaniem pliku xml we flashu
plik xml ma taką konstrukcje:
<content>
<field>
<next>
<tag>somethink</tag>
</next>
</field>
</content>
chce wyciągnac zawartosc tagu <tag>
i zacząłem to tak robic:
Kod
var myXML:XML = new XML();
myXML.ignoreWhite=true;
myXML.load("myxml.xml");
myXML.onLoad = function(success)
{
if (success)
{
var content = myXML.firstChild.childNodes;
var dueContent = content[2];
trace(dueContent)
}
};
bardzo proszę o pomoc
Pawel_W
16.08.2010, 06:11:38
dawno nie pisałem nic w action script ale o ile się nie mylę to przez childNodes zwracasz się do węzłów potomnych znajdujących się jedynie 1 poziom niżej, a Ty potrzebujesz 3 poziomy, dlatego to powinno chyba wyglądać tak:
Kod
var content = myXML.firstChild.childNodes[0].childNodes[0].nodeValue;
karis
16.08.2010, 09:38:04
zapomniałem dodać, że w tagu <field> mam x potomnych
wookieb
16.08.2010, 09:44:01
var x:XML = <root>
<test>
<element>elements</element>
<b>hehehe</b>
</test>
<test>
<element>elements</element>
<b>hehehe</b>
</test>
</root>;
trace(x.descendants('b').length());
karis
16.08.2010, 10:04:27
to mi nie dziala ani w as2 ani w as3
wookieb
16.08.2010, 10:21:27
No a czym się objawia NIE działanie?
karis
16.08.2010, 10:51:07
undefined w outpucie
wookieb
16.08.2010, 10:52:31
Pokaż swojego xmla, kod jaki teraz masz.
karis
16.08.2010, 11:14:35
wookieb
16.08.2010, 11:19:22
Czytałeś co Ci dałem czy udajesz?
karis
16.08.2010, 11:28:13
czytałem dobrze , sprawdzałeś ten kod? bo mi to nie działa i uwierz mi, że nie kopiowałem żywcem tylko pozmieniałem dla siebie na odpowiedni tag
w as2 dostaje komunikat , że nie ma tekiej metody descendants a w as3 taki:
TypeError: Error #1006: Wyrażenie value nie jest funkcją.
at Beznazwy_fla::MainTimeline/frame1()
wookieb
16.08.2010, 11:36:14
Właśnie, że kopiujesz półżywcem.
Metoda zwraca obiekt typu XMLList czyli LISTĘ znalezionych elementów (obiekt ten nie obsługuje value()). Możesz po niej przelecieć albo użyć
trace(x.descendants('b')[0].text());
Opcji jest więcej
karis
16.08.2010, 11:40:39
zobacz tak robie a dostaje komunikat:
Brak metody o nazwie descendants
var myXML:XML = new XML();
myXML.ignoreWhite=true;
myXML.load("dump_data.xml");
myXML.onLoad = function(success)
{
if (success)
{
trace(myXML.descendants('open')[0].text());
}
};
wookieb
16.08.2010, 11:50:19
Ponieważ jest ona dostępna w as3. W as2 już się nie pisze.
karis
16.08.2010, 11:56:27
to jak ma ten kod wyglądać w as3 nie znam kompletnie as3, więc proszę napisz mi jak ma wygladać
wookieb
16.08.2010, 11:59:15
karis
16.08.2010, 12:45:37
coś już ruszyło, ale nadal mam taki problem
otóż dostaję komunikat:
Zwracana wartość musi być zdefiniowana
Oto mój kod:
var xmlLoader:URLLoader = new URLLoader();
var xmlData:XML = new XML();
xmlLoader.addEventListener(Event.COMPLETE, LoadXML);
xmlLoader.load(new URLRequest("dump_data.xml"));
function LoadXML(e:Event):void
{
xmlData = new XML(e.target.data);
var open = ParseOpen(xmlData);
trace(open);
}
function ParseOpen(xmlData:XML):void
{
var open = xmlData.descendants('open')[0].text();
return open;
}
ten błąd występuje rzekomo w linii 28 czyli tam gdzie jest return open;
wookieb
16.08.2010, 12:52:32
Linia 24 zamien void na string. Zwracasz przecież ciąg znaków.
karis
16.08.2010, 13:25:05
Cytat(wookieb @ 16.08.2010, 13:52:32 )

Linia 24 zamien void na string. Zwracasz przecież ciąg znaków.
super dzieki!
jeszcze gdybyś mi tylko powiedział jak pobrać w as3 parametry np: flash.swf?param1=sth
wookieb
16.08.2010, 13:32:34
root.loaderInfo.parameters['nazwa_parametru']
// lub
root.loaderInfo.parameters.nazwa_parametru;
karis
16.08.2010, 13:57:45
czemu jak osadze flasha w htmlu i wstawie to na serwer nie działa przekierowanie na podstrone z flasha?
mam taki kod:
var request:URLRequest = new URLRequest(link);
navigateToURL(request, '_blank');
normalnie lokalnie działa
wookieb
16.08.2010, 14:03:28
Ponieważ przeglądarka może blokować dostęp otwieranie nowych okien.
Ustaw w htmlu (wyświetlającym flasha) allowScriptAccess na always. Jeżeli to nie pomoże dodaj allowDomain na all
karis
16.08.2010, 15:46:06
osadzam go tak:
classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"
width="375" height="300">
<param name="movie" value="parser.swf"> <param name="allowScriptAccess" value="always"> <param name="allowDomain" value="always"> <embed
pluginspage="http://www.macromedia.com/go/getflashplayer"
type="application/x-shockwave-flash"
src="parser.swf"
width="375" height="300"
allowScriptAccess="all"
allowDomain="all">
i nie działa nadal przekierowanie
wookieb
16.08.2010, 17:43:53
allowDomain na all. Poza tym pokaż jaki link chcesz otworzyć.
karis
16.08.2010, 18:57:12
ustawiłem i nadal nic
chce otworzyc link zewnętrzny np http:/wp.pl
wookieb
16.08.2010, 19:02:31
Wypuść to online żebysmy mogli zobaczyć bo Ci nie wierzę.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.