Kode
function oppdater(e:MouseEvent){
for (var i:int = 0; i < highscores.length; i++)
{
trace(highscores[i].lengde, highscores[i].deltaker);
}
}
Skal prøve å forklare hva som skjer her.
ActionScript er statisk typet språk. DVS at du må skrive hva slags type ditt variable er.
trace() kaster alt av input til string. Den gir f*en i om det du gir den er en string eller en integer. Den kaster alt til string uansett.
Kode
RankUt.text = highscores[i].lengde +highscores[i].deltaker
.text deimot er en variabel til en klasse, denne har en type deklarasjon av typen string.
Kode
highscores[i].lengde + highscores[i].deltaker
Her antar jeg at du har .lengde som er av typen int, og .deltaker om er av typen string.
string + int == bad.
Legg merke til at i trace() konkatinerer du ikke int og string. Du skiller dem med en komma. Viktig forskjell.
Det du må gjøre er at du må sørge for at variablene du skal ha ut i .text er av typen string, og er konkatinert sammen.
Noe sånt skal funke, men har ingen IDE til å teste, så kan være noen små feil her.
Kode
var oppdater:String = ""
function oppdater(e:MouseEvent): void{
for (var i:int = 0; i < highscores.length; i++)
{
var lengde: String = String(highscores[i].lengde);
var deltaker:String = String(highscores[i].deltaker);
oppdater += lengde + "\n" + deltaker + "\n"
}
RankUt.text = oppdater
}
Ser nå at du slet med et annet problem egentlig.
Det som var feilen var at for hver iterasjon av for loopen, så la du til noe nytt i tekstfeltet.
1 Iterasjon:
legg lengde og deltager inn i tekstfelt, ta bort det gamle.
2. iterasjon:
legg lengde og deltager inn i tekstfelt. tar bort det gamle.
trace() skriver alt ut fortløpende, den tar ikke bort det som alt er skrevet ut.
Sist endret av Foxboron; 16. februar 2013 kl. 13:55.