27. juli 2004 - 11:27Der er
40 kommentarer og 1 løsning
aktiver XML function
jeg har lidt problemer med at "aktiver" en XML function - hvis det overhovedet kan lade sig gøre...
Jeg henter filen ind med: MY_xml = new XML(); MY_xml.ignoreWhite = true; MY_xml.onLoad = function(success) { if (success) { loadhotspot(MY_xml); } }; MY_xml.load('spot.xml');
Herefter køres der en function som løber filen igennem:
function loadhotspot(xmlDoc_xml) { her køres et loop som henter det rigtige på baggrund af en ID }
mit spørgsmål er så - kan man ikke aktiver functionen loadhotspot via en knap - som sætter en ny ID - hvorefter loopet bliver kørt igennem med de nye betingelser - uden at man skal til at loade XML-filen.. eller skal man loade hele filen hver gang ???
Støv, fibre og metalliske partikler kan påvirke både uptime, levetid og driftssikkerhed. Derfor arbejder flere datacentre systematisk med contamination control.
Du fører jo hele indholdet over i loadhotspot(MY_xml) - Så enten deler du det op der - eller deler det op i MY_xml - Så vil du kunne hente enkelte dele.
function: function loadhotspot(xmlDoc_xml) { for (var i = 0; i<xmlDoc_xml.firstChild.childNodes.length; i++) { var placespot = xmlDoc_xml.firstChild.childNodes[i].attributes.id;
nu var det så lige et dårlig eksempel - da begge IDèr er 1 - men der kan være mange i XMLèn hvor der hentes efter hvilken ID de har - det vil sige alle med ID 1 bliver hentet osv..
var placespot = new Array (); var MY_xml = new XML (); MY_xml.ignoreWhite = true; // function xmlDu () { for (i = 0; i< MY_xml.firstChild.childNodes.length; i++) { placespot[i] = MY_xml.firstChild.childNodes[i].attributes["ID"]; } loadhotspot (placespot[0]); } function loadhotspot (i) { xmlDoc_xml = MY_xml.firstChild.childNodes[i-1];
if (i == _root.volume.voloutput) { mc = hotspotmc.duplicateMovieClip ("mc" + i, i); mc._width = xmlDoc_xml.childNodes[0].firstChild.nodeValue; mc._height = xmlDoc_xml.childNodes[1].firstChild.nodeValue; mc._x = xmlDoc_xml.childNodes[2].firstChild.nodeValue; mc._y = xmlDoc_xml.childNodes[3].firstChild.nodeValue; mc.text = xmlDoc_xml.childNodes[4].firstChild.nodeValue; mc.price = xmlDoc_xml.childNodes[5].firstChild.nodeValue; mc.eximage = xmlDoc_xml.childNodes[6].firstChild.nodeValue; mc.unikid = xmlDoc_xml.childNodes[7].firstChild.nodeValue; } mc.onPress = function () { _root.text = this.text; _root.price = this.price; _root.eximage = this.eximage; }; } MY_xml.onLoad = function (success) { if (success) { var XML_max = 0; xmlDu (); } }; MY_xml.load ("xml.xml");
hmm det virkede ikke helt alligevel - skal nok smide flere point, hvis du gider at hjælpe igen... Det virker fint nok hvis der kun er elementer med forskellige idèr - men hvis der er flere med samme id skal der jo laves et MC for hvert - det kan jeg ikke rigtigt få den til ??
Ja jeg ved godt at "ID" er lidt misvisende i dette tilfælde..
Det som det går ud på er at man kan definere nogle "hotspots" på et billede. Men der kan være mere end et hotspot på samme billede. ---klip <SPOT ID="1"> <WIDTH>75</WIDTH> <HEIGHT>73.3</HEIGHT> osv..---
<SPOT ID="1"> viser hvilke billede det hører til.
Håber det hjælper lidt ellers kan jeg lige uploade et screenshot - måske det giver mere mening..
de grønne felter er så de hotspot der bliver lavet - hvis man så klikker på "billede 2" - så skal den tage alle de hotspot der har ID = 2 i XML og generere nogle nye hotspot - hvorefter de gamle bliver slettet
Det er jeg selvfølgelig ked af at jeg ikke har fået forklaret ordenligt - når du har brugt meget tid på det. Det kan så være der er en meget nemmere måde at lave det på end det jeg er startet på
kan du så ikke lave xml´en om til noget ala´ : <BILLEDE PIC_ID="1"> <SPOT ID="1"> <WIDTH>75</WIDTH> <HEIGHT>73.3</HEIGHT> <XSPOT>151.5</XSPOT> <YSPOT>130.8</YSPOT> <TEXT>test</TEXT> <PRICE>100</PRICE> <EXPIC></EXPIC> <UNIKID>70</UNIKID> </SPOT> <SPOT ID="2"> <WIDTH>301</WIDTH> <HEIGHT>224.3</HEIGHT> <XSPOT>417.5</XSPOT> <YSPOT>293.3</YSPOT> <TEXT>test1</TEXT> <PRICE>100</PRICE> <EXPIC>none</EXPIC> <UNIKID>71</UNIKID> </SPOT> </BILLEDE>
jo det er ikke noget problem - det er selvfølge lidt nemmere hvis indholdet er for hver side er samlet - burde vel kunne bruge det script du har lavet tidligere...
jeg kan simpelhen ikke få det til at virke - hvis jeg smider yderligere 200 point - kan du så lave et eksempel ?? (skal nok smide nogen alligevel - da du har hjulpet meget)
lol - det eneste jeg mangler er at lave et loop så jeg kan få værdien <WIDTH> i nedenstående script... så skulle den være der... så hvis du lige har den gyldne sætning..... så jeg kan komme videre i mit liv :-)
jeg har følgende - men som du kan se så viser den bare det første hotspot uden at loop igennem dem som f.eks hører til PIC_ID=1 - så det virker som det skal hvis kun der er et hotspot - men det er jo ikke lige meningen...
System.useCodePage= true; var placespot = new Array (); var MY_xml = new XML (); MY_xml.ignoreWhite = true; //
function loadhotspot (info) {
for (i = 0; i< MY_xml.firstChild.childNodes.length; i++) {
if (MY_xml.firstChild.childNodes[i].attributes["PIC_ID"] == info) {
for (j = 0; j<= MY_xml.firstChild.childNodes[i].childNodes.length ; j++) {
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.