14. marts 2002 - 18:04Der er
56 kommentarer og 1 løsning
OK jeg giver op... Flash og XML
jeg har lavet en xml fil, den ser ud som det her: <?xml version="1.0"?> <pagefolder> <page> <name>name1</name> <location>location1</location> <name>name1</name> <location>location1</location> </page> <page> <name>name2</name> <location>location2</location> <name>name1</name> <location>location1</location> <name>name1</name> <location>location1</location> </page> <page> <name>name2</name> <location>location2</location> </page> </pagefolder>
Ideen er, at den skal loade en menu i Flash 5 og så skal jeg kunne navigere efter name hvor location er urlén til siden.
Men jeg kan ikke få det til at virke i Flash, jeg har kigget på flashkit og andre steder men jeg kan ikke få det til at virke, ikke en gang en lille smule.
Jeg skal bruge et actionscript der kan loade XML´en og anvende name og location som navigering i en menu.
Om der skal laves om i xml´en eller ej, er lige meget. Jeg kunne forestille mig at man kunne sætte location ind som attribute i name noden eller noget i den retning, det spiller ingen rolle, jeg skal bare have en løsning.
Løsningen skal dog kunne håndtere flere name/location nodes i samme page node.
Alle dokumenter på PC'ere, Mac'er mv. er skrevet i ASCII for at du kan læse dem. Hvis du ikke konvertere det til unicode, så skal du anvende en encoding-attribut i dit dokument:
Men den enkelste og smarteste løsning er at konvertere dine xml dokumenter til unikode. Eller fremstille xml dokumenterne i en editor, der kan gemme i Unicode formatet.
ok, den har jeg sat ind, så det er i orden. Jeg har forsøgt mig med dette script, som er hentet fra flashkit: //Create new xml object xmldoc = new XML(); //when the data has loaded, convert the shit xmldoc.onLoad = convertXML; //Write to screen xml_container = "Loading data"; //And load up the XML xmldoc.load("navigation_XML.xml");
//And now to the hard stuff function convertXML(){ if(this.loaded){ xml_container = "Menu Loaded!"; }//End of if statement mainTag = new XML; elementTag = new XML; articleList = new Array; elementList = new Array; //Tjeck maintag mainTag = this.firstChild.nextSibling; if(mainTag.nodeName.toLowerCase() == "filelist"){ articleList = mainTag.childNodes; xml_container = "Processing"; for(i=0; i<=articleList.length;i++){ document_url = ""; headline_text = ""; if(articleList[i].nodeName.toLowerCase() == "file"){ elementList = articleList[i].childNodes; for(j=0;j<=elemetList.length;j++){ elementTag = elementList[j]; elementType = elementTag.nodeName.toLowerCase(); if(elementType == "name"){ headline_text = elementTag.firstChild.nodeValue; } else { if(elementType == "src"){ document_url = elementTag.firstChild.nodeValue; }//End of if statement }//End of if else statement }//End of for loop //Write list to screen xml_container += "<a href="+document_url+" target=top>"+headline_text+"</a><br>"; }//End of if statement }//End of for loop } else { xml_container = "Error processing..."; } }
Der er lavet nogle tilpasninger i XML´en for at få det til at passe.
i det script jeg har smidt ind her over, sker der det, at xml´en bliver loadet, men i stedet for at behandle if(mainTag.nodeName.toLowerCase() == "filelist), springer den videre til xml_container = "Error processing...";, altså fortæller den mig, at min mainTag ikke er lig med filelist, men det er den, i XML´en er filelist og file med
Nu har jeg rettet mit script til //Create new xml object xmldoc = new XML(); //when the data has loaded, convert the shit xmldoc.onLoad = convertXML; //Write to screen xml_container = "Loading data"; //And load up the XML xmldoc.load("navigation_XML.xml");
//And now to the hard stuff function convertXML(){ if(this.loaded){ xml_container = "Menu Loaded!"; }//End of if statement mainTag = new XML; elementTag = new XML; articleList = new Array; elementList = new Array; //Tjeck maintag mainTag = this.firstChild.nextSibling; if(mainTag.nodeName.toLowerCase() == "pagefolder"){ articleList = mainTag.childNodes; xml_container = "Processing"; for(i=0; i<=articleList.length;i++){ document_url = ""; headline_text = ""; if(articleList[i].nodeName.toLowerCase() == "page"){ elementList = articleList[i].childNodes; for(j=0;j<=elemetList.length;j++){ elementTag = elementList[j]; elementType = elementTag.nodeName.toLowerCase(); if(elementType == "name"){ headline_text = elementTag.firstChild.nodeValue; } else { if(elementType == "location"){ document_url = elementTag.firstChild.nodeValue; }//End of if statement }//End of if else statement }//End of for loop //Write list to screen xml_container += "<a href="+document_url+" target=top>"+headline_text+"</a><br>"; }//End of if statement }//End of for loop } else { xml_container = "Error processing..."; } }
Da jeg downloaded dit dokument, så var der en masse blanke linier i toppen. Jeg har lige undersøgt dit dokument i en Hex editor, og fik følgende hex koder foran <?xml version="1.0" encoding="ISO-8895-1"?> ; 0D0D0D
Jeg har anvendt trace til at undersøge dit actionscript, og det virker perfekt. Men det kan stadigvæk ikke vise url adresser i vinduet.
Taget fra Flash 5 bruger manual:
Når du vælger HTML formaterings muligheden i Text Option panelet, så understøttes HTML tags som du har tilført i Action panelet, når du eksportere din swf movie fil.
Hej Per, stavefejl... irriterende. Men du siger min kode ikke kan anvendes.. fedt. Men hvis jeg så ændrer Text Option fra dynamic til static, kunne det måske virke.
... nej. her er mit script: //Create new xml object xmldoc = new XML(); //when the data has loaded, convert the shit xmldoc.onLoad = convertXML; //Write to screen xml_container = "Loading data"; //And load up the XML xmldoc.load("navigation_XML.xml");
//And now to the hard stuff function convertXML(){ if(this.loaded){ xml_container = "Menu Loaded!"; }//End of if statement mainTag = new XML; elementTag = new XML; articleList = new Array; elementList = new Array; //Tjeck maintag mainTag = this.firstChild.nextSibling; if(mainTag.nodeName.toLowerCase() == "pagefolder"){ articleList = mainTag.childNodes; xml_container = "Processing"; for(i=0; i<=articleList.length;i++){ document_url = ""; headline_text = ""; if(articleList[i].nodeName.toLowerCase() == "page"){ elementList = articleList[i].childNodes; for(j=0;j<=elementList.length;j++){ elementTag = elementList[j]; elementType = elementTag.nodeName.toLowerCase(); if(elementType == "name"){ headline_text = elementTag.firstChild.nodeValue; } else { if(elementType == "location"){ document_url = elementTag.firstChild.nodeValue; }//End of if statement }//End of if else statement }//End of for loop //Write list to screen xml_container += "Content " + headline_text; }//End of if statement }//End of for loop } else { xml_container = "Error processing..."; } } Kan det have noget at gøre med det du tidligere nævnte med hensyn til XMl og blanks?
Homesite, hvis det er XML siden vi snakker om. Vedr. det med at fjerne anvendelsen af HTML i text options. Hvordan får jeg så mit XML indhold omsat til noget der kan klikkes på?
Jeg ved at Flash MX kan lave det.. jeg var med til et intro seminar, og jo, den kan den slags, men jeg har set Flash 5 gøre det samme, så at opgradere pga det problem er måske lidt vildt.
Ja, det gør jeg.Jeg er meget nybegynder indenfor dette felt, så det kunne måske hjælpe lidt.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.