Hallo Kollegen!
Ich sitze gerade an einer generischen Funktion, in der Werte aus einem mehrdimensionalen Array abgerufen werden sollen, wobei Arrayname, Index und Methodenname als Parameter an die Funktion übergeben werden sollen.
Leider habe ich in der Namensgenerierung einen Fehler bzw. weiß ich nicht, ob das mit dem Methodennamen überhaupt so klappen kann.
ActionScript:
// Die protokoll Klasse
function protokoll(art, wert, zeit, zeitdiff) {
this._art = undefined;
this._wert = 0;
this._zeit = 0;
this._zeitdiff = 0;
this.setArt(art);
this.setWert(wert);
this.setZeit(zeit);
this.setZeitdiff(zeitdiff);
}
// METHODEN der protokoll Klasse
protokoll.prototype.setArt = function(newArt) { this._art = newArt; };
protokoll.prototype.getArt = function() { return this._art; };
protokoll.prototype.addProperty("art", protokoll.prototype.getArt, protokoll.prototype.setArt);
protokoll.prototype.setWert = function(newWert) { this._wert = newWert; };
protokoll.prototype.getWert = function() { return this._wert; };
protokoll.prototype.addProperty("wert", protokoll.prototype.getWert, protokoll.prototype.setWert);
protokoll.prototype.setZeit = function(newZeit) { this._zeit = newZeit; };
protokoll.prototype.getZeit = function() { return this._zeit; };
protokoll.prototype.addProperty("zeit", protokoll.prototype.getZeit, protokoll.prototype.setZeit);
protokoll.prototype.setZeitdiff = function(newZeitdiff) { this._zeitdiff = newZeitdiff; };
protokoll.prototype.getZeitdiff = function() { return this._zeitdiff; };
protokoll.prototype.addProperty("zeitdiff", protokoll.prototype.getZeitdiff, protokoll.prototype.setZeitdiff);
_global.sitzungsprotokollArray = new Array();
_global.sitzungsprotokollID = 0;
// hier wird das multidimensionale Array erzeugt
function schreibeSitzungsprotokoll(art, wert, zeit, zeitdiff) {
_global[protokoll + _global.sitzungsprotokollID] = new protokoll(art, wert, zeit, zeitdiff);
_global.sitzungsprotokollArray.push(_global[protokoll + _global.sitzungsprotokollID]);
_global.sitzungsprotokollID++;
}
// die oben angesprochene Suchfunktion
function sucheInArray(arrayName, arrayMethode, kriterium) {
for (var i = 0; i < _global[arrayName].length; i++) {
// die kritische Zeile, warum klappt das nicht?
if (_global[arrayName][i][arrayMethode] == kriterium) {
return i;
}
}
}
schreibeSitzungsprotokoll("idea", 2, 100, 0);
schreibeSitzungsprotokoll("idea", 4, 200, 0);
schreibeSitzungsprotokoll("idea", 1, 300, 0);
// liefert nur ein "undefined", wahrsch. weil die dyn. Namensgernerierung gar nie geklappt hat
trace(sucheInArray("sitzungsprotokollArray", "getArt()", "idea"));
Ist es nicht möglich einen Methodenaufruf dynamisch zu generieren?
Warum klappt das
ActionScript:
_global[arrayName][i][arrayMethode]
nicht?
Ich wollte eigentlich zB das erzeugen:
ActionScript:
_global.sitzungsprotokollArray[i].getArt()
Falls jemand einen Tip hat, ich wäre sehr dankbar!