Kan legge fra- og tilnavnene direkte i komboboksene fraCb og tilCb.
(Men da må programmet endres hver gang vi endrer
rutetabellen, så det er bedre å legge rutetabellen i en
xml-fil,
og lage en egen klasse Rutetid som leser inn xml-filen og har
metoder for å finne avstander.)
For å få gjort oppslagene må vi da lagre tabellen
Gardermoen Flesland Værnes Bodø Evenes Tromsø Gardermoen 0 40 60 100 150 200 Flesland 40 0 50 80 130 180
i en variabel på denne måten:
var rutetabell: Object = { Gardermoen:{Gardermoen: 0, Flesland: 40}, Flesland: {Gardermoen: 40, Flesland: 0}, Værnes: {Gardermoen: 60, Flesland: 50},...Tromsø: {Gardermoen: 200, Flesland: 180} };//rutetabellOppslag kan da gjøres med franavn og tilnavn som indeks:
var avstand:Number = rutetabell["Tromsø"]["Gardermoen"]); //vil gi avstand lik 200En slik assosiativ tabell (String istedenfor int som indeks), kan kanskje bedre illustreres slik:
Gardermoen Flesland Værnes Bodø Evenes Tromsø Gardermoen:0
Flesland: 40Gardermoen:40
Flesland: 0Gardermoen:60
Flesland: 50Gardermoen:100
Flesland: 80Gardermoen:150
Flesland: 130Gardermoen:200
Flesland: 180
Innhold i XML-fil:
Legg merke til attributtene til feltene! Merket rødt og blått!
<rutetabell> <avstand fra="Gardermoen"> <verdi til="Gardermoen"> 0 </verdi> <verdi til="Flesland"> 40 </verdi> </avstand> <avstand fra="Flesland"> <verdi til="Gardermoen"> 40 </verdi> <verdi til="Flesland"> 0 </verdi> </avstand> <avstand fra="Værnes"> <verdi til="Gardermoen"> 60 </verdi> <verdi til="Flesland"> 50 </verdi> </avstand> <avstand fra="Bodø"> <verdi til="Gardermoen"> 100 </verdi> <verdi til="Flesland"> 80 </verdi> </avstand> <avstand fra="Evenes"> <verdi til="Gardermoen"> 150 </verdi> <verdi til="Flesland"> 130 </verdi> </avstand> <avstand fra="Tromsø"> <verdi til="Gardermoen"> 200 </verdi> <verdi til="Flesland"> 180 </verdi> </avstand> </rutetabell>
xml-variablene rutetabell kan da illustreres omtrent slik:
Rutetabell() { //Konstruktør Last inn xml-fil på vanlig måte heng på rutetabellFerdig() som lytter på xmlLoader }//Oppslag av avstander: getAvstand(fra,til):Number { return rutetabell.avstand.(@fra==fra).verdi.(@til==til); }//Navnetabell til tilCb: getFraNavn(): Array { for i fra 0 til rutetabell.avstand.length() o=new Object() o.data=i o.label= rutetabell.avstand[i].@fra //Henter attributtet @fra push inn i tabell } return tabell }//Navnetabell til fraCb: getTilNavn(): Array { for i fra 0 til rutetabell.avstand[0].verdi.length() o=new Object() o.data=i o.label=rutetabell.avstand[0].verdi[i].@til //Henter atrributtet @til push inn i tabell } return tabell }
var data: Array = rutetabell.getFraNavn(); //Henter alle navnene fra Rutetabell-klassen for(var i:int=0; i<data.length;i++) { fraCb.addItem(data[i]); //addItem legger til objekter med feltene label og data }//for