Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 20-03-2005, 02:25   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2003
Beiträge: 593
Smile richtige Schreibweise der Variable einer For-Schleife in einer eigenen Funktion...

hey leute....
Hoffe, dass das jetzt nichts ist, was hier schon x mal behandelt wurde.... beim suchen konnt ich zwar einiges finden, leider aber nicht die perfekte Lösung.
Also: Ich hab auf der Bühne 5 mc's und ein dynamiesches Textfeld; die 5 mc's stellen die (rewind)Button namens "mc1 - mc5" dar; das AS wird in einer for-Schleife erstellt! Hier erstmal das AS:
ActionScript:
  1. var pfad1 = this.rollOver_mc;
  2. funC_arr = ["Func1", "Func2", "Func3", "Func4", "Func5"];
  3. // <Funtionen> (Sollen je nach angeklicktem mc ausgeführt werden)
  4. function Func1() {
  5. _root.dyNamik.text = "Funktion, die erste...";
  6. }
  7. function Func2() {
  8. _root.dyNamik.text = "Funktion, die zweite...";
  9. }
  10. function Func3() {
  11. _root.dyNamik.text = "Funktion, die dritte...";
  12. }
  13. function Func4() {
  14. _root.dyNamik.text = "Funktion, die vierte...";
  15. }
  16. function Func5() {
  17. _root.dyNamik.text = "Funktion, die fünfte...";
  18. }
  19. /*
  20. function frunctioNNN() {
  21. [funita]+pUnkt+"[()]";
  22. }
  23. */
  24. // dieses teil hier funktioniert leider nicht!!!
  25. // </Funtionen>
  26. // <BTN-Funktionen / Rewind>
  27. var clicked;
  28. for (var i = 1; i<=5; i++) {
  29. pfad1["mc"+i].onRollOver = pfad1["mc"+i].onDragOver=function () {
  30. if (this != _root.clicked) {
  31. this.gotoAndPlay(2);
  32. }
  33. };
  34. pfad1["mc"+i].onRollOut = pfad1["mc"+i].onDragOut=function () {
  35. if (this != _root.clicked) {
  36. this.gotoAndPlay(11);
  37. }
  38. };
  39. var button = pfad1["mc"+i];
  40. button.i = i;
  41. //trace(button);
  42. button.onRelease = function() {
  43. if (this != _root.clicked) {
  44. // -<Aktion>
  45. /* var funita = funC_arr; // mir fiel grad' kein besserer Name ein ;)
  46. var pUnkt = [this.i];
  47. frunctioNNN(funita, pUnkt);
  48. */
  49. // dieses teil hier funktioniert leider auch nicht!!!
  50. _root.dyNamik.text = this.i;
  51. //trace(_root.dyNamik.text);
  52. if (_root.dyNamik.text == "1") {
  53. Func1();
  54. } else if (_root.dyNamik.text == "2") {
  55. Func2();
  56. } else if (_root.dyNamik.text == "3") {
  57. Func3();
  58. } else if (_root.dyNamik.text == "4") {
  59. Func4();
  60. } else if (_root.dyNamik.text == "5") {
  61. Func5();
  62. }
  63. /*
  64. Zur zeit schreibe ich nun "this.i" in das dynamische textfeld und
  65. mache dann direkt eine Abfrage "if (dyNamik = ZahlX) {FunktionX}"....
  66. naja das werdet ihr da sicherlich auch selbst rauslesen können ;-)"
  67. */
  68. // -</Aktion>
  69. this.onEnterFrame = function() {
  70. if (this._currentframe == 10) {
  71. this.stop();
  72. delete this.onEnterFrame;
  73. }
  74. };
  75. _root.clicked.gotoAndPlay(11);
  76. _root.clicked.useHandCursor = true;
  77. _root.clicked = this;
  78. this.useHandCursor = false;
  79. }
  80. };
  81. }
  82. // </BTN-Funktionen / Rewind>
  83.  
Wie ihr den Komentaren des AS' entnehmen könnt, funktioniert das Ganze noch nicht so ganz sauber und ich wollt euch mal fragen, ob villeicht jemand für dieses (ja auch jetzt schon funktionierende) Script ein paar Verbesserungsvorschläge hätte!?
Ich häng auch die *.fla sowie die *.swf mal mit dran...

edit: Ach ja, ich fülle das Textfeld nicht direkt bei der if-Abfrage mit "Funktion, die Xte...", da in den Funktionen ja später mal irgend etwas anderes geschehen soll....
Angehängte Dateien
Dateityp: zip rewindMCs.zip (7,7 KB, 9x aufgerufen)
__________________
mfg

Geändert von L.M. (20-03-2005 um 02:45 Uhr)
L.M. ist offline   Mit Zitat antworten
Alt 20-03-2005, 13:18   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Wenn du in for-Schleifen Events auf MCs setzen willst, musst du den Schleifenzähler irgendwie merken, da nach Ablauf der Schleife der Zähler nicht mehr existiert, bzw. nur der letzte Wert bekannt ist. Am einfachsten geht das durch Setzen einer Referenz, z.B.:
ActionScript:
  1. for (var i = 1; i<=5; i++) {
  2.    pfad1["mc"+i].ID = i;//Referenz setzen
  3.    pfad1["mc"+i].onRollOver = pfad1["mc"+i].onDragOver=function () {
  4.    if (this != _root.clicked) {
  5.       _level0.rollOver_mc["mc"+this.ID].gotoAndPlay(2);
  6.    }
  7. ...
  8. }
  Mit Zitat antworten
Alt 20-03-2005, 14:03   #3 (permalink)
Neuer User
 
Registriert seit: Jul 2003
Beiträge: 593
Hatte sowas "in der Art" hier auch schon gelesen (dass man das mit der ID zwischenspeichern muss), hatte jedoch festgestellt, dass es auch ohne funktioniert und habe "pfad1["mc"+i].ID = i;" nicht benutzt in meinem AS!
dafür habe ich dann vor dem onRelease-Event
ActionScript:
  1. ...
  2. var button = pfad1["mc"+i];
  3. button.i = i;
  4. button.onRelease = function() {
  5. ...
geschrieben.....

Hat es einen tieferen Sinn, dass du in deinem Beispiel
ActionScript:
  1. ...
  2. _level0.rollOver_mc...
  3. ...
  4. // und NICHT
  5. ...
  6. pfad1...
  7. ...
geschrieben hast????

Am wichtigsten wär mir aber eigentlich zu wissen, ob man (um den Umweg über das Textfeld sparen zu können) etwas in dieser Art :
ActionScript:
  1. ...
  2. Func[+this.ID]();
  3. ...
schreiben könnte!? Ich hab da schon ätliches probiert, aber leider erfolglos!
__________________
mfg

Geändert von L.M. (20-03-2005 um 14:15 Uhr)
L.M. ist offline   Mit Zitat antworten
Alt 20-03-2005, 22:26   #4 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
Hat es einen tieferen Sinn, dass du in deinem Beispiel
Sicher ist sicher... vielleicht ist der Pfad zur Referenz ja nicht bekannt. Würde ich auf jeden Fall austracen um ganz sicher zu gehen...
  Mit Zitat antworten
Alt 21-03-2005, 10:32   #5 (permalink)
Neuer User
 
Registriert seit: Jul 2003
Beiträge: 593
Zitat:
Am wichtigsten wär mir aber eigentlich zu wissen, ob man (um den Umweg über das Textfeld sparen zu können) etwas in dieser Art :
ActionScript:
  1. ...
  2. Func[+this.ID]();
  3. ...
schreiben könnte!? Ich hab da schon ätliches probiert, aber leider erfolglos!
Weiss keiner ne Antwort, ob man den aufruf einer Funktion so oder ähnlich _variabel_ schreiben kann?
__________________
mfg
L.M. ist offline   Mit Zitat antworten
Alt 14-04-2005, 20:26   #6 (permalink)
Neuer User
 
Registriert seit: Jul 2003
Beiträge: 593
hat denn keiner ne idee???
__________________
mfg
L.M. ist offline   Mit Zitat antworten
Alt 14-04-2005, 20:47   #7 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
ich muss zugeben, ich blick überhaupt nicht, um was es hier geht und was du überhaupt willst :-(

suchst du sowas?

_root["Func1"]();

ist das selbe wie:
_root["Func"+id]();
_root[funC_arr[id]]();
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 28-08-2005, 18:31   #8 (permalink)
Neuer User
 
Registriert seit: Jul 2003
Beiträge: 593
JAA, genau sowas hab ich gesucht!
Dankeschön, klapt wunderbar!
__________________
mfg
L.M. 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 03:22 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele