| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| QuickScope Registriert seit: May 2004 Ort: Upper Austria
Beiträge: 256
|
hallo! hab grad ein kleines problem mit variablen gültigkeiten, wär super wenn mir da jemand raushelfen könnte ;-) also ich habe 2 funktionen: function a() { var x_num:Number = 0; var SID_num:Number = setInterval (b, 500, x_num); } function b(x_num) { if (x_num == 5) { clearInterval(SID_num); } else { return x_num++; } } fragt nicht nach dem sinn dieser funktion, ich hab das nur aus einem bestehenden script vereinfacht rausgeholt, um nicht unnötig ballast mitzuschleppen... jetzt zu meinem problem: funktion a erzeugt die variable x_num mit dem wert 0, ruft die funktion b in einem intervall auf. dort wird der wert um eins erhöht oder der intervall abgebrochen wenn er 5 mal ausgeführt wurde. doch leider funktioniert scheinbar die return anweisung nicht, denn sobald der intervall zum zweiten mal aufgerufen wird, ist der wert der von x_num wieder 0 das seltsame daran: es hat schon funktioniert, wie die befehle aus funktion a noch in der hauptzeitleiste und nicht in einer funktion gestanden sind... bin am ende mit meiner weisheit, bitte um hilfe! |
| | |
| | #2 (permalink) |
| muh Registriert seit: Apr 2002 Ort: Freiburg / Stuttgart
Beiträge: 4.338
|
Integers, Strings und Booleans werden nicht als Referenz sondern als Wert übergeben. In b kommt also als Parameter der WERT von x_num an. Die Variable x_num in der Funktion ist also eine Kopie vom anderen x_num zur Zeit des Aufrufs. Wenn du an dieser Kopie etwas änderst, ändert das nichts an der äußeren Variable. Musst du die Variable über das Interval übergeben? Du könntest sie z.B. (ganz schlecht ) einfach auf _root legen, und dann auch von b aus mit _root.x_num ansprechen.
|
| | |
| | #3 (permalink) |
| QuickScope Registriert seit: May 2004 Ort: Upper Austria
Beiträge: 256
|
ok, jetzt wird mir einiges klar nur: gilt diese feststellung nur dann, wenn man variablen mittels setInterval übergibt? also die variable im _root platzieren? find ich eigentlich nicht so toll, dann könnt ich mir funktion a gleich ersparen... wäre es sinnvoll, die variable global zu definieren? _global.x_num = 0; lg jay Geändert von jaygroove (27-05-2004 um 11:43 Uhr) |
| | |
| | #4 (permalink) |
| muh Registriert seit: Apr 2002 Ort: Freiburg / Stuttgart
Beiträge: 4.338
|
wo du die Variable dann hinlegst ist im Grunde egal, aber wo wir hier ja shcon mal im AS 2.0 Board sind, solltest du natürlich auch irgendwo ein Objekt haben, das das Interval und die Variable enthält / kontrolliert. Dann werden die Funktionen eben zu Methoden, und du hast nen Platz für deine Variable. Das x_num erstellst du ja mit var in einer Funktion. Das hat zur Folge, dass die Variable nach durchlaufen der Funktion garnicht mehr existiert. |
| | |
| | #5 (permalink) |
| QuickScope Registriert seit: May 2004 Ort: Upper Austria
Beiträge: 256
|
puuh, jetzt wirds kompliziert für mich... es ist ja auch gewünscht, dass x_num nach durchlauf des Intervalls nicht mehr vorhanden ist. ich brauchs ja nur dazu, dass ich weiss, wie oft der Intervall bereits aufgerufen wurde. wenn ich ne methode machen möchte, würde das mit prototype funktionieren - oder? |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |