Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 15-02-2004, 14:13   #1 (permalink)
Flash & TYPO3
 
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 2.700
Script kürzen: Schon ziehmlich komplex

Hallo,

ich habe ein Haupt- und ein Untermenü. Das Untermenü wird aus einem XML ausgelesen.
Angucken
Downloaden

Hier das Script das gekürzt werden soll. (Außerdem hat es einen Fehler: Wenn man schnell hintereinander 2 Hauptmenü-Buttons drückt stimmt die Reihenfolge, in der die Untermenü-Butons eingefaded werden nicht mehr)
ActionScript:
  1. stop();      // Film stoppen
  2. System.useCodePage = true// Umlaute richtig anzeigen
  3. timeline = this;            // Pfad für das Untermenü festelegen
  4.  
  5.  
  6. /////////// Start Hauptmenü-Animation ///////////////////
  7. /////////////////////////////////////////////////////////
  8. /////////////////////////////////////////////////////////
  9. // Festlegen der Buttonanzahl und Erhöhen um 1 (Button1 = erster; nicht Button0!)
  10. hm_btn_anzahl = 6;
  11. hm_btn_anzahl++;
  12. for (var i = 0; i<hm_btn_anzahl; i++) {
  13.         this["hm_btn"+i].onEnterFrame = function() {
  14.                 if (this.rewind) {
  15.                         // Button-Over Geschwindigkeit | i<7
  16.                         for (var i = 0; i<7; i++) {
  17.                                 this.nextFrame();
  18.                         }
  19.                 } else {
  20.                         // Button-Out Geschwindigkeit | Ein, zwei, drei mal
  21.                         this.prevFrame();
  22.                 }
  23.         };
  24. }
  25. for (var i = 1; i<=hm_btn_anzahl; i++) {
  26.         //
  27.         // den Index i in dem Button abspeichern
  28.         this["hm_btn"+i].i = i-1;
  29.         //
  30.         this["hm_btn"+i].onRollOver = function() {
  31.                 this.rewind = true;
  32.         };
  33.         this["hm_btn"+i].onRollOut = function() {
  34.                 this.rewind = false;
  35.         };
  36.         this["hm_btn"+i].onPress = function() {
  37.                 um_btn_changeTxt(_root["SubArr"+this.i]);
  38.                 um_btn_show(_root.container["SubArr"+this.i].length);
  39.         };
  40. }
  41. /////////////////////////////////////////////////////////
  42. /////////////////////////////////////////////////////////
  43. ////////////// Ende-Hauptmenü-Animation /////////////////
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51. /////////// Start Untermenü-Animation ///////////////////
  52. /////////////////////////////////////////////////////////
  53. /////////////////////////////////////////////////////////
  54.  
  55. ///// XML für den Text der Untermenü-Buttons: Start ///////////////////
  56. btn_text = new XML();
  57. btn_text.ignoreWhite = true;
  58. btn_text.load("module/untermenu.xml");
  59. btn_text = new XML();
  60. btn_text.ignoreWhite = true;
  61. btn_text.load("module/untermenu.xml");
  62. btn_text.onLoad = function(success) {
  63.     if (success) {
  64.         for (var i = 0; i<btn_text.firstChild.childNodes.length; i++) {
  65.             // Für jeden <entry> in der XML Datei ein Array mit den jeweiligen Bez. erstellen
  66.             _root["SubArr"+i] = new Array();
  67.             //////////////////////////////////
  68.             trace("HaupBtn: "+btn_text.firstChild.childNodes[i].attributes.btn);
  69.             trace("Zugehöriges Array: SubArr"+i);
  70.             trace("#################");
  71.             //////////////////////////////////
  72.             for (var j = 0; j<btn_text.firstChild.childNodes[i].childNodes.length; j++) {
  73.                 // das jeweilige Array mit den Bez. füllen
  74.                 _root["SubArr"+i].push(btn_text.firstChild.childNodes[i].childNodes[j].attributes.text);
  75.                 //////////////////////////////////
  76.                 trace(_root["SubArr"+i][j]);
  77.                 //////////////////////////////////     
  78.             }
  79.             //////////////////////////////////
  80.             trace("================\n");
  81.             //////////////////////////////////
  82.         }
  83.     }
  84. };
  85. ///// XML für den Text der Untermenü-Buttons: Ende ////////////////////
  86.  
  87.  
  88.  
  89. // Festlegen der Untermenü-Button-Anzahl "Redaktion" (von Null auf 1)
  90. um_btn_anzahl = 4;
  91. um_btn_anzahl++;
  92. ////// Alle Radaktions-Buttons unsichtbar machen: Start /////////////////
  93. for (var i = 1; i<=um_btn_anzahl; i++) {
  94.         this["um_btn"+i]._alpha = 0;
  95. }
  96. ///// Alle Radaktions-Buttons unsichtbar machen: Ende ///////////////////
  97.  
  98. //////////////////////// um_btn Texte ändern: Start /////////////////////
  99. // Funktion um die Bez. der Unterpunkte zu ändern
  100. um_btn_changeTxt = function (Arr) {
  101.     trace(Arr.length);
  102.         for (var i = 0; i<Arr.length; i++) {
  103.             this["um_btn"+(i+1)].mcTxtFeld.txtFeld.text = Arr[i];
  104.         }
  105. };
  106. ////////////////////////// um_btn Texte ändern: Ende ////////////////////
  107. /////// Die "Redaktions"-Buttons nacheinander einfaden: Start ///////////
  108. MovieClip.prototype.um_btn_fadin = function(wert, speed) {
  109.         this.enabled = 0;
  110.         this.onEnterFrame = function() {
  111.                 if (this._alpha<wert) {
  112.                         this._alpha += speed;
  113.                 } else {
  114.                         this.enabled = 1;
  115.                         delete this.onEnterFrame;
  116.                 }
  117.         };
  118. };
  119. // Zum einfaden die Funktion "um_btn_show" aufrufen
  120. um_btn_show = function() {
  121.     for(var f=1; f<=um_btn_anzahl; f++) {
  122.         this["um_btn"+f]._alpha =0;
  123.     }
  124.     var j = 1;
  125.     sID = setInterval(function () {
  126.         timeline["um_btn"+j].um_btn_fadin(100, 1.85);
  127.         // Einfade-Geschwindigkeit einstellen
  128.         j++;
  129.         if (j>=um_btn_anzahl) {
  130.                 clearInterval(sID);
  131.         }
  132.     }, 200); // Einfade-Abstand von Btn zu Btn einstellen
  133. };
  134. ////////// Die "Redaktions"-Buttons nacheinander einfaden: Ende //////////////////
  135.  
  136.  
  137. // Trägt nichts mehr bei
  138. /*
  139. /////////////////// Die Button-Effekte: Start /////////////////////
  140. //// Initialisieren: Start ////
  141. over_out = 1;
  142. x_dif = 6;
  143. // x_sp = 1;
  144. minAlpha = 70;
  145. alphaStep = 3;
  146. //// Initialisieren: Ende /////
  147. MovieClip.prototype.um_btn_effekt = function(over_out, tx, sp) {
  148.         this.onEnterFrame = function() {
  149.                 if (over_out == 0) {
  150.                         // Beim Drübergehen
  151.                         if (this._alpha>minAlpha) {
  152.                                 this._alpha -= alphaStep;
  153.                         } else {
  154.                                 delete this.onEnterFrame;
  155.                         }
  156.                 } else {
  157.                         // Beim Runterrollen
  158.                         if (this._aplha<100) {
  159.                                 this._alpha += alphaStep;
  160.                         } else {
  161.                                 delete this.onEnterFrame;
  162.                         }
  163.                 }
  164.                 if (this._x<tx) {
  165.                         this._x += sp;
  166.                 } else if (this._x>tx) {
  167.                         this._x -= sp;
  168.                 } else {
  169.                         delete this.onEnterFrame;
  170.                 }
  171.         };
  172. };
  173. /////////////////// Die Button-onRollOver-Effekte: Ende //////////////////////
  174. /////////////////// Mouse-Eventz festlegen: Start //////////////////////
  175. // Verschieben und Faden
  176. var bx = null;
  177. for (i=1; i<=um_btn_anzahl; i++) {
  178.         timeline["um_btn"+i].i = i;
  179.         timeline["um_btn"+i]._alpha = 0;
  180.         // Die Mouseevents festlegen
  181.         timeline["um_btn"+i].onRollOver = function() {
  182.                 bx = timeline["um_btn"+this.i]._x;
  183.                 this.um_btn_effekt(0, this._x+x_dif, 1);
  184.         };
  185.         timeline["um_btn"+i].onRollOut = function() {
  186.                 this.um_btn_effekt(1, bx, 1);
  187.         };
  188. }
  189. /////////////////// Mouse-Eventz festlegen: Ende ///////////////////////
  190. */
  191. /////////////////////////////////////////////////////////
  192. /////////////////////////////////////////////////////////
  193. ////////////// Ende-Hauptmenü-Animation /////////////////
  194.  

Geändert von johanness (15-02-2004 um 14:17 Uhr)
johanness ist offline   Mit Zitat antworten
Alt 15-02-2004, 17:20   #2 (permalink)
Flash & TYPO3
 
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 2.700
Ok, habe es jetzt selbst noch gekürzt und etwas erweitert.
Nun steht eigentlihc nur noch mein Problem von oben: Wenn ich auf die Hauptmenübuttons klicke, werden die Untermenü-Buttons eingeblendet. Doch wenn der User auf einen zweiten Hauptmenü-Buttons klickt, noch bevor die anderen zuvor fertig eingeblendet sind, spinnt das Script. Hier noch einmal zum anschauen: www.hinterbaenkler.de.tf

Das Wichtigste aus dem Script:
ActionScript:
  1. stop();      // Film stoppen
  2. System.useCodePage = true// Umlaute richtig anzeigen
  3. timeline = this;            // Pfad für das Untermenü festelegen
  4. um_btn_xVal = new Array()// Array mit den Koordinaten der Untermenübuttons
  5. um_btn_xVal = [615, 646, 667, 682]; // Koordinaten zuweisen
  6.  
  7. /////////// Start Hauptmenü-Animation ///////////////////
  8. /////////////////////////////////////////////////////////
  9. /////////////////////////////////////////////////////////
  10. // Festlegen der Buttonanzahl und Erhöhen um 1 (Button1 = erster; nicht Button0!)
  11. hm_btn_anzahl = 6;
  12. hm_btn_anzahl++;
  13.  
  14. for (var i = 1; i<=hm_btn_anzahl; i++) {
  15.         // den Index i in dem Button abspeichern
  16.         this["hm_btn"+i].i = i-1;
  17.  
  18.         this["hm_btn"+i].onPress = function() {
  19.                 um_btn_change(_root["SubArr"+this.i]);
  20.         };
  21. }
  22. /////////////////////////////////////////////////////////
  23. /////////////////////////////////////////////////////////
  24. ////////////// Ende-Hauptmenü-Animation /////////////////
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32. /////////// Start Untermenü-Animation ///////////////////
  33. /////////////////////////////////////////////////////////
  34. /////////////////////////////////////////////////////////
  35.  
  36. // Festlegen der Untermenü-Button-Anzahl "Redaktion" (von Null auf 1)
  37. um_btn_anzahl = 4;
  38. um_btn_anzahl++;
  39. ////// Alle Radaktions-Buttons unsichtbar machen: Start /////////////////
  40. for (var i = 1; i<=um_btn_anzahl; i++) {
  41.         this["um_btn"+i]._alpha = 0;
  42.         this["um_btn"+i]._visible = false;
  43. };
  44. ///// Alle Radaktions-Buttons unsichtbar machen: Ende ///////////////////
  45.  
  46. ///// XML für den Text der Untermenü-Buttons: Start /////////////////////
  47. btn_text = new XML();
  48. btn_text.ignoreWhite = true;
  49. btn_text.load("module/untermenu.xml");
  50. btn_text = new XML();
  51. btn_text.ignoreWhite = true;
  52. btn_text.load("module/untermenu.xml");
  53. btn_text.onLoad = function(success) {
  54.     if (success) {
  55.         for (var i = 0; i<btn_text.firstChild.childNodes.length; i++) {
  56.             // Für jeden <entry> in der XML Datei ein Array mit den jeweiligen Bezeichnern erstellen
  57.             _root["SubArr"+i] = new Array();
  58.             //////////////////////////////////
  59.             trace("HaupBtn: "+btn_text.firstChild.childNodes[i].attributes.btn);
  60.             trace("Zugehöriges Array: SubArr"+i);
  61.             trace("#################");
  62.             //////////////////////////////////
  63.             for (var j = 0; j<btn_text.firstChild.childNodes[i].childNodes.length; j++) {
  64.                 // das jeweilige Array mit den Bezeichern füllen
  65.                 _root["SubArr"+i].push(btn_text.firstChild.childNodes[i].childNodes[j].attributes.text);
  66.                 //////////////////////////////////
  67.                 trace(_root["SubArr"+i][j]);
  68.                 //////////////////////////////////     
  69.             }
  70.             //////////////////////////////////
  71.             trace("================\n");
  72.             //////////////////////////////////
  73.         }
  74.     }
  75. };
  76. ///// XML für den Text der Untermenü-Buttons: Ende ////////////////////
  77.  
  78.  
  79.  
  80. //////////////////////// Untermenü-Buttons ändern: Start /////////////////////
  81. // Funktion um die Bez. der Unterpunkte zu ändern
  82. um_btn_change = function (Arr) {
  83.     for(var i=1; i<um_btn_anzahl; i++) {    // Alle Buttons wiederausrichten und ausschalten
  84.         this["um_btn"+i]._x = um_btn_xVal[i-1];
  85.         this["um_btn"+i]._visible = false;
  86.     }
  87.     for (var i=1; i<=Arr.length; i++) {  // Den Buttons die entsprechenden Texte zuweisen und anschalten
  88.         this["um_btn"+i].mcTxtFeld.txtFeld.text = Arr[i-1];
  89.         this["um_btn"+i]._visible = true;
  90.         this["um_btn"+i]._alpha = 0;
  91.     }
  92.  
  93.     var j = 1;
  94.     sID = setInterval(function () {  // die Untermenü-Buttons einfaden lassen
  95.         timeline["um_btn"+j].um_btn_fadin(4.5);
  96.         // Einfade-Geschwindigkeit einstellen
  97.         j++;
  98.         if (j>=um_btn_anzahl) {
  99.                 clearInterval(sID);
  100.         }
  101.     }, 150); // Einfade-Abstand von Btn zu Btn einstellen
  102.  
  103. };
  104. MovieClip.prototype.um_btn_fadin = function(speed) {
  105.     this.enabled = 0;
  106.         this.onEnterFrame = function() {
  107.             if (this._alpha<100) {
  108.                 this._alpha += speed;
  109.             } else {
  110.                 this.enabled = 1;
  111.                 delete this.onEnterFrame;
  112.             }
  113.         }
  114. };
  115. ////////// Die "Redaktions"-Buttons nacheinander einfaden: Ende /////////////////
  116.  
  117. /////////////////////////////////////////////////////////
  118. /////////////////////////////////////////////////////////
  119. ////////////// Ende-Hauptmenü-Animation /////////////////
  120.  

Geändert von johanness (15-02-2004 um 17:23 Uhr)
johanness 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 05:22 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele