PDA

Volledige versie bekijken : Een variable variable creëren


hopie83
%Europe/Berlin %507 %2005, 12:11
Ik heb een probleempje met actionscript. Ik wil namelijk een variable variable aanmaken. Voorbeeld:

var loadMovies = new Array();
loadMovies[0] = "contact_telefoon";
loadMovies[1] = "polaroids_eindgebruiker";
loadMovies[2] = "brief_uitleg";
loadMovies[3] = "bedrijvig_krijtbord";
loadMovies[4] = "postit_creativiteit";

for(var i = 0; i < loadMovies.length; i++) {
eval("totalBytes"+i) = null;
}

Hierbij geeft hij echter een foutmelding:

**Error** Scene=Rest, layer=actions, frame=1:Line 18: Left side of assignment operator must be variable or property.
eval("totalBytes"+i) = null;

Voldemort
%Europe/Berlin %510 %2005, 12:14
for(var i = 0; i < loadMovies.length; i++) {

==>

for(i = 0; i < loadMovies.length; i++) {

LB Back
%Europe/Berlin %518 %2005, 12:27
var loadMovies = new Array();
loadMovies[0] = "contact_telefoon";
loadMovies[1] = "polaroids_eindgebruiker";
loadMovies[2] = "brief_uitleg";
loadMovies[3] = "bedrijvig_krijtbord";
loadMovies[4] = "postit_creativiteit";
for (var i = 0; i<loadMovies.length; i++) {
this["totalBytes"+i] = null;
}
Die foutmelding klopt (http://www.macromedia.com/cfusion/knowledgebase/index.cfm?id=tn_16187) wel als je > Flash 5 gebruikt.

Roenes
%Europe/Berlin %541 %2005, 13:00
Voldermort, die regel heeft er geen invloed op. Op jouw manier zorg je er alleen maar voor dat i geen lokale variabele wordt. Maar dat heeft voor de rest nergens invloed op in dit geval :)

hopie83
%Europe/Berlin %555 %2005, 13:20
Ik gebruik flash 8, dus geen flash 5, maar ik zie dat ik één dingetje anders heb als jij. En dat is: this["totalBytes"+i] = null;.... ik had: eval("totalBytes"+i) = null;


Nu heb ik nog één probleem... HEt volgende werkt niet:

this["listenerObject" +i]:Object = new Object();

Roenes
%Europe/Berlin %557 %2005, 13:22
Klopt, volgens mij werkt dit niet omdat je het datatype aangeeft. Dan mag het volgens mij geen samengestelde var zijn bij de declaratie ervan. Haal :Object eens weg. Dan zou het wel moeten werken :)

hopie83
%Europe/Berlin %571 %2005, 13:43
Thanx.. tot voor zover werkt 't. Maar ik kom er nog steeds niet helemaal uit. Ik zal mijn gehele scriptje even plaatsen. Hij laadt nu mijn movies, maar haalt ze niet meer weg (hij voert de code tussen van de eventlisteners onLoadProgres en onLoadComplete niet uit.) iemand een oplossing?

//loadMovie één voor één (en unload ze weer)
var loadMovies = new Array();
loadMovies[0] = "contact_telefoon";
loadMovies[1] = "polaroids_eindgebruiker";
loadMovies[2] = "brief_uitleg";
loadMovies[3] = "bedrijvig_krijtbord";
loadMovies[4] = "postit_creativiteit";

for(i = 0; i < loadMovies.length; i++) {
this["totalBytes"+i] = null;
this["bytesLoaded"+i] = 0;
this["pic_mc"+i] = new MovieClipLoader();
eval("pic_mc"+i).loadClip(loadMovies[i] + ".swf", this.createEmptyMovieClip(loadMovies[i], this.getNextHighestDepth()));

this["listenerObject" +i] = new Object();

eval("pic_mc"+i).addListener("listenerObject" +i);

eval("listenerObject" +i).onLoadComplete = function() {
numberOfMoviesLoaded++;
unloadMovie(loadMovies[i]);
}

eval("listenerObject" +i).onLoadProgress = function(target:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void {
if (this["totalBytes"+i] == null) {
this["totalBytes"+i] = bytesTotal;
}
this["bytesLoaded"+i] = bytesLoaded;
}
}

hopie83
%Europe/Berlin %629 %2005, 15:06
Iemand?