Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 27-05-2004, 10:39   #1 (permalink)
QuickScope
 
Benutzerbild von jaygroove
 
Registriert seit: May 2004
Ort: Upper Austria
Beiträge: 256
Question Funktionen: Variablen-Gültigkeit

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!
jaygroove ist offline   Mit Zitat antworten
Alt 27-05-2004, 11:33   #2 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
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.
Janoscharlipp ist offline   Mit Zitat antworten
Alt 27-05-2004, 11:42   #3 (permalink)
QuickScope
 
Benutzerbild von jaygroove
 
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)
jaygroove ist offline   Mit Zitat antworten
Alt 27-05-2004, 11:55   #4 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
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.
Janoscharlipp ist offline   Mit Zitat antworten
Alt 27-05-2004, 12:07   #5 (permalink)
QuickScope
 
Benutzerbild von jaygroove
 
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?
jaygroove ist offline   Mit Zitat antworten
Alt 27-05-2004, 13:56   #6 (permalink)
QuickScope
 
Benutzerbild von jaygroove
 
Registriert seit: May 2004
Ort: Upper Austria
Beiträge: 256
sieht so aus als stünde ich nun mit meinem 'problem' alleine da... *snief*
jaygroove 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 13:54 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele