[actionscript] Array vullen *

Pagina: 1
Acties:

  • alientje
  • Registratie: Maart 2002
  • Laatst online: 11-01-2008
Ik heb het volgende probleem:

In een movie laad ik een aantal variabelen in met de naam 'ovraagX' door middel van een tekstbestand. Hierin is 'X' een getal tussen 1 en 30.

Nu wil ik die variabelen in een array zetten. Ik kan gewoon één voor één die variabelen in de array typen, maar dan zit ik oneindig te typen (er zijn nog meer variabelen die gevuld moeten worden).

Ik wil proberen om met behulp van een loopje de variabelen 'ovraag1' t/m 'ovraag30' in een keer in de array 'arr_vraag' te stoppen. Het probleem is dat ik de 'X' van 'ovraagX', niet kan wijzigen omdat 'ovraagX' geen string is, maar een variabele. Weet iemand hoe ik anders snel 30 (en meer) variabelen in een array kan laden vanuit een tekstbestand?


Dit is wat ik tot nu toe heb:


loadVariables("ouders.txt",_root)

arr_vraag =new Array();

for(i=0;i<30;i++){
arr_vraag[i] = _root.ovraag(i)
}

3d-en is leuk


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

ActionScript = Flash = Webdesign & Graphics.

Professionele website nodig?


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 22:27

crisp

Devver

Pixelated

kan je niet net zoals in javascript dit doen:

code:
1
arr_vraag[i] = _root['ovraag'+i]


:?

alternatief zou eval() zijn, maar dat is vies ;)

[ Voor 20% gewijzigd door crisp op 09-07-2003 10:10 ]

Intentionally left blank


Verwijderd

en dit lukt nu niet met zo een for loop? foutmeldingen?

  • alientje
  • Registratie: Maart 2002
  • Laatst online: 11-01-2008
loadVariables("ouders.txt",_root)

arr_vraag =new Array();

for (i=0; i<30; i++) {
arr_vraag[i] = _root['ovraag'+i]
}

Als ik dit gebruik krijg ik een lege array...

3d-en is leuk


  • alientje
  • Registratie: Maart 2002
  • Laatst online: 11-01-2008
oke... ik heb nu 'eval' gebruikt en het werkt opzich wel, maar hij laadt de variabelen uit het tekstbestand nog steeds niet in de array, terwijl ik ze in de debugger wel zie staan:

code:
1
2
3
4
5
6
7
8
9
10
11
12
loadVariables("ouders.txt",_root)

arr_vraag =new Array();

ovraag1 = "hallo allemaal"

ovraag13 = "hallo allemaalb"


for (i=0; i<30; i++) {
    arr_vraag[i] = eval("ovraag" + (i+1));
}

Het resultaat is dat ovraag1 en ovraag13 wel gevuld zijn en de rest niet

[ Voor 14% gewijzigd door alientje op 09-07-2003 10:36 ]

3d-en is leuk


Verwijderd

volgens mij ligt het eraan dat je actionscript al verder gaat voordat alle data is ingeladen. dan zijn de variabelen dus nog undefined op het moment dat je ze in de array wil zetten. wanneer je de variabelen in in een movieClip laadt, kun je daar een onData event (treedt op als alle data is ingeladen) aanhangen om de executie van de rest van je script mee te starten.

in flashMX heb je een nieuw loadVars object (heb ik geen ervaring mee) waarmee je beter kunt aangeven welke variabelen je heen en weer wilt sturen.

overigens vindt ik de notatie met blokhaken zoals crisp die aangeeft lekkerder lezen dan eval (en sommigen vinden eval vies). ook ben je in je eerste regel vergeten een puntkomma aan het eind te zetten; ik weet eigenlijk niet hoe tolerant flash daarmee is, maar ik zorg altijd dat ik mijn regels wel afsluit.

[ Voor 40% gewijzigd door Verwijderd op 09-07-2003 10:41 ]


  • alientje
  • Registratie: Maart 2002
  • Laatst online: 11-01-2008
Verwijderd schreef op 09 juli 2003 @ 10:34:
volgens mij ligt het eraan dat je actionscript al verder gaat voordat alle data is ingeladen. dan zijn de variabelen dus nog undefined op het moment dat je ze in de array wil zetten. wanneer je de variabelen in in een movieClip laadt, kun je daar een onData event (treedt op als alle data is ingeladen) aanhangen om de executie van de rest van je script mee te starten.
Je had gelijk.. als ik de array vul in een later frame dan werkt het wel :/
Blijkbaar heeft flash een framepje of zo nodig om alles in te laden. :(

3d-en is leuk


  • dellai
  • Registratie: Augustus 2000
  • Laatst online: 10-06 14:16
je moet denk ik even kijken naar de functie "push" ... hiermee vul je meestal een Array.

zie http://www.macromedia.com...script_dictionary064.html

Egg ?


  • oh,when?
  • Registratie: April 2000
  • Niet online

oh,when?

...

welke versie gebruik je?

"You're only as good, as what you did last week."


Verwijderd

zie de post van dellai. Je moet idd push() gebruiken. En weet je zeker dat de data uit je tekstbestandje goed aankomen? Als dat allemaal klopt, dan moet het wel lukken.

Verwijderd

alientje schreef op 09 July 2003 @ 10:50:
[...]


Je had gelijk.. als ik de array vul in een later frame dan werkt het wel :/
Blijkbaar heeft flash een framepje of zo nodig om alles in te laden. :(
zomaar een framepje later zetten is niet de juiste methode! dan kan het gooed zijn dat het offline werkt, maar dat het online bij lagere bandbreedtes toch nog mis gaat.
als je geen gebruik wilt maken van onData, zorg dan dat je bv aan het eind van je text file een extra variable zet allesGeladen=true, en dat je je movie tussen twee frames laat loopen totdat die variabele geladen is, en daarna kun je veilig je array vullen

  • oh,when?
  • Registratie: April 2000
  • Niet online

oh,when?

...

gebruik je mx? gebruik dan loadvars
gebruik je flash 5? gebruik xml object ( hoef je toch geen xml overheen te duwen )

en je hoeft geen push te gebruiken..das onzin.

"You're only as good, as what you did last week."


Verwijderd

oh,when? schreef op 09 July 2003 @ 13:13:
gebruik je flash 5? gebruik xml object ( hoef je toch geen xml overheen te duwen )
hoe werkt dat dan? omdat ik niets van xml weet heb ik het xml object altijd als iets engs beschouwd...
is het gewoon een kwestie van een xml object aanmaken, en dan met myObject.load("filenaam.txt"); de variabelen inladen?
en hoe werkt het als je variabelen heen en weer wilt sturen naar een php-script?
wat heeft dat voor voordelen tov movieclip.loadVariables?

  • oh,when?
  • Registratie: April 2000
  • Niet online

oh,when?

...

Verwijderd schreef op 09 juli 2003 @ 14:08:
[...]

hoe werkt dat dan? omdat ik niets van xml weet heb ik het xml object altijd als iets engs beschouwd...
is het gewoon een kwestie van een xml object aanmaken, en dan met myObject.load("filenaam.txt"); de variabelen inladen?
en hoe werkt het als je variabelen heen en weer wilt sturen naar een php-script?
wat heeft dat voor voordelen tov movieclip.loadVariables?
gewoon:

Flash ActionScript:
1
2
3
4
5
var myXML = new XML();
myXML.onLoad = function() {
    trace(this.toString());
}
myXML.load( "fooBar.txt" );


en met sendAndLoad stuur je het weer terug naar je server.

en het voordeel is dat je de player het object gewoon kan referencen en garbage collecten want een object is een harde referentie, terwijl een Movieclip datatype timeline gebaseerd is.

"You're only as good, as what you did last week."


Verwijderd

interessant :) ga ik eens proberen!

Verwijderd

Tijdje terug heb ik hier iets voor gemaakt:

[rml][ FlashMX source]CSV Object....CSV's Laden! :)[/rml]
Pagina: 1