Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[AS2] Variabele in een variabele?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Vraagje. Ik heb de variable "vraagActief". Deze variable draagt de waarde "1".

Nu wil ik graag dat de waarde van "vraagActief" achter de variabele "antwoord" (op de plaats waar nu "<vraagActief>" staat) komt te staan. Zodat de variabele in dit geval "antwoord1" komt te heten.

Hoe doe ik dit?

code:
1
2
3
4
5
var vraagActief:Number = 1;

var antwoord<vraagActief>:String = "Groningen";

trace(antwoord1);

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

Gebruik arrays.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • XangadiX
  • Registratie: Oktober 2000
  • Laatst online: 26-05 15:01

XangadiX

trepanatie is zóó kinderachtig

tja, als je het netjes wil doen dan zou ik inderdaad een array gebruiken met iets als antwoord[1] (antwoord[2], antwoord[3] enz.)

in dit geval zou je kunnen gebruiken

code:
1
if ( eval("antwoord" + x) == "groningen")


maar eval is evil, en als je eval gebruikt dan ben je strafbaar en lacht iedereen je een week uit.

Overigens stampt god een katje dood als je eval gebruikt.
denk om de katjes

[ Voor 8% gewijzigd door XangadiX op 13-05-2008 18:05 ]

Stoer; Marduq


  • LB Back
  • Registratie: November 2004
  • Laatst online: 03-06 11:07
Array methode inderdaad:
code:
1
2
3
var vraagActief:Number = 1;
this["antwoord"+vraagActief] = "Groningen";
trace(antwoord1);

Verwijderd

Topicstarter
LB Back schreef op woensdag 14 mei 2008 @ 14:23:
Array methode inderdaad:
code:
1
2
3
var vraagActief:Number = 1;
this["antwoord"+vraagActief] = "Groningen";
trace(antwoord1);
Nice! Dank je wel. Je hebt een vrouw van 21, bruin haar, lieve glimlach (mijn vriendin), heel erg blij gemaakt :)

Verwijderd

Topicstarter
Ik gebruik de methode van LB Back nu. En dat werkt.Maar ik stuit tegen het volgende probleem.

De volgende code is geplakt aan een movieclip in een movieclip.

Dus: root > mc-kaart > mc-groningen

code:
1
2
3
4
on (release) {
    this["antwoord" + _root._currentframe] = "Groningen";
    _root.nextFrame();
}


Hij kijkt dus naar het framenummer op de tijdlijn van de root. Dat is goed. Alleen, als ik in de root op framenummer 2 de inhoud van "antwoord1" probeer uit te lezen geeft ie undefined als uitslag. Wordt het niet globaal opgeslagen?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op donderdag 15 mei 2008 @ 12:57:
Wordt het niet globaal opgeslagen?
Nou weet ik niets van AS, maar ik denk dat er toch belletjes zouden moeten gaan rinkelen bij het stellen van die vraag en het zien van het keyword "this". ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

LB Back schreef op woensdag 14 mei 2008 @ 14:23:
Array methode inderdaad:
code:
1
2
3
var vraagActief:Number = 1;
this["antwoord"+vraagActief] = "Groningen";
trace(antwoord1);
nee, Nee, NEE!!!

variabelen als "antwoord1" t/m "antwoordN" zijn echt uit den boze en kun je het beste zo ver mogelijk vandaan blijven. Met het gebruiken van arrays bedoel ik dat "antwoord" een array moet zijn, die je dan vervolgens weer kunt indexeren met je 'vraagActief'. Eval is evil, maar 'variabele variabelnamen' ook. Ga dus niet dat tweede gebruiken om het eerste te voorkomen, want daar los je niets mee op.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • LB Back
  • Registratie: November 2004
  • Laatst online: 03-06 11:07
Precies, die array-methode werkt alleen als er een referentiepunt, zoals this of _root voorstaat, wellicht werkt:
code:
1
2
3
4
on (release) {
    _root["antwoord" + _root._currentframe] = "Groningen";
    _root.nextFrame();
}
Bij deze code geeft ie trouwens eerst het huidige frame weer en gaat dan pas eentje verder, weet niet of dat de bedoeling is...

antwoord1" t/m "antwoordN oplossingen gebruik ik eigenlijk alleen als ik een variabel aantal mcs wil attachen of dupliceren en met een loop waarden daaraan wil toekennen. Ik ben het met .oisyn eens dat je dat beter kunt voorkomen.

Zou je zoiets als
code:
1
var Antwoorden:Array = new Array("Groningen", "Leeuwarden", "Assen", "Zwolle");
gebruiken dan kun je dit doen:
code:
1
2
3
4
on (release) {
    _root.antwoord = _root.antwoorden[_root._currentframe];
    _root.nextFrame();
}


edit:
Arrays zijn wel zero-geïndexeerd en frame 0 bestaat niet...

[ Voor 4% gewijzigd door LB Back op 16-05-2008 16:44 ]

Pagina: 1