Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 21-03-2005, 11:39   #1 (permalink)
Neuer User
 
Registriert seit: May 2003
Beiträge: 28
setInterval scope

tach!

ich werd noch verrückt mit den dummen flash event-scopes!
mein problem

ActionScript:
  1. this.meineTolleVariable = "bla";
  2. setInterval(this.testScope,1);
  3. this.testScope = function() {
  4.   trace(this); // function
  5.   trace(this.meineTolleVariable); // undefined
  6. }

gibt es keine möglichkeit, den scope beim setInterval-aufruf zu behalten? das einzige was ich gefunden hab, war ne AS2-lösung mit delegates/callbacks, aber ich brauch was für AS1.
und natürlich kann ich den scope als parameter mit übergeben, aber is ja auch nich das gelbe von ei (zumal die funktion ja auch aus nem "normalen" scope aufgerufen werden könnte).

gruesse
ingo
chillu ist offline   Mit Zitat antworten
Alt 21-03-2005, 12:22   #2 (permalink)
Neuer User
 
Registriert seit: Jan 2005
Ort: In the arena
Beiträge: 165
setInterval(this,"testScope",1);
subHero ist offline   Mit Zitat antworten
Alt 21-03-2005, 12:29   #3 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
du kannst nicht mitgeben, was beim "geben" ja erst erzeugt werden soll.
deine lösung kann auch nicht gehen, weil setInteval in diesem fall ja nicht "weiss", wer der rufer ist.
ActionScript:
  1. var gSI = new Array();
  2. //
  3. gSI[gSI.length] = setInterval(fTest, 3000, gSI.length, "der");
  4. gSI[gSI.length] = setInterval(fTest, 1000, gSI.length, "das");
  5. gSI[gSI.length] = setInterval(fTest, 4000, gSI.length, "Beweiss");
  6. gSI[gSI.length] = setInterval(fTest, 2000, gSI.length, "ist");
  7. //
  8. function fTest(vNr,vStr) {
  9.     trace(vNr+"//"+vStr);
  10.     clearInterval(gSI[vNr]);
  11. }
oder so, oder anders. du wirst auf jeden fall mitgeben müssen welche daten, bzw. wo diese zu finden sind. und (sinnvoll), welche intervall-nummer gerade ruft.
von letztere auf ersteres zu schliessen geht nur, wenn die daten nach dem setIntervall gesetzt werden.
ActionScript:
  1. var gSI = new Array();
  2. //
  3. var gInfo = new Array();
  4. gInfo[0] = {time:3000, text:"der"};
  5. gInfo[1] = {time:1000, text:"das"};
  6. gInfo[2] = {time:4000, text:"Beweiss"};
  7. gInfo[3] = {time:2000, text:"ist"};
  8. //
  9. for (i in gInfo) {
  10.     gSI[gSI.length] = setInterval(fTest, gInfo[i].time, gSI.length, i);
  11. }
  12. //
  13. function fTest(vNr, i) {
  14.     trace(vNr+"//"+gInfo[i].text);
  15.     clearInterval(gSI[vNr]);
  16. }
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (21-03-2005 um 12:45 Uhr)
hgseib ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 06:44 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele