AlarMedlem sedan nov. 2004149 inlägg Eftersom jag hållit på med Flash ganska många år är detta lite generande - jag fattar helt enkelt inte hur man ska göra följande:
Jag har behov att från ett textdokument ladda in en numerisk variabel.
Variabeln ska sedan användas i ett script som kollar att ett visst maxvärde inte överskrids.
Anledningen till att variabeln måste ligga i ett textdokument är att min uppdragsgivare enkelt ska kunna ändra värdet på variabeln - dvs, skriva in en annan siffra i textdokumentet.
Jobbar i Flash MX av gammal vana...
/Alar
Använd LoadVars objektet istället. Det är betydligt mer lättarbetat än loadVariables.
var maxValue = 0;
var lv = new LoadVars();
// eventet onLoad "avfyras" när variablerna laddats och omvandlats till properties i LoadVars-objektet.
lv.onLoad = function(success)
{
if(success)
{
// Den inkommande variabeln är i strängformat så vi måste omvandla den till
// ett numeriskt värde med funktionen Number(). Det gör vi samtidigt som
// Vi tilldelar datan till en variabel:
maxValue = Number(this.maxValue);
} else {
// Laddningen misslyckades. ev felhantering eller kod för visande av felmeddelande
// placeras här.
}
}
// Slutligen säger vi objektet att ladda en textfil.
lv.load("filnamn.txt");
Tänk på att inladdningen i LoadVars objektet är asynkront. dvs. den väntar inte på att laddningen skall bli klar innan den fortsätter. Jag har dessutom för mig att själva inladdningen inte ens påbörjas förrens all kod i denna bildruta kört klart.
/Mirandir
AlarMedlem sedan nov. 2004149 inlägg Hej Mirandir,
inladdningen funkar men sen skiter det sig vid konverteringen från sträng till nummer. Funkar helt enkelt inte. När jag försöker använda variabeln så säger Flash: NaN (Not a Number)...
???
/Alar
AlarMedlem sedan nov. 2004149 inlägg Hej igen,
Eftersom det inte funkade med Number snokade jag runt lite i hjälpfunktionen och hittade till slut en lösning - parseInt.
Skrev alltså maxValue = parseInt(this.maxValue); istället för maxValue = Number(this.maxValue);
Men enligt manualen borde Number funka... Konstigt är det... Och jag fattar inget...
/Alar
parseInt är inte lika känsligt för "skräptecken" som Number(). Men är å andra sidan lite långsammare.
Du har antagligen något blanktecken eller en radbrytning efter siffran. Om du sätter ett &-tecken direkt efter siffran så tror jag att Number skall fungera.
/Mirandir
AlarMedlem sedan nov. 2004149 inlägg OK. Snabbhet verkar inte vara av avgörande betydelse i detta fall.
Men stort tack för hjälpen och God Jul & Gott nytt År - och må icke skägget börja växa i omvänd riktning på dig!
/Alar