Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 23-02-2004, 12:23   #1 (permalink)
Flash & TYPO3
 
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 2.700
Unermenü einfaden

Hallo,
mit dem folgendem Script fade ich meine Untermenü-Buttons ein.
Wenn der User einen Hauptmenü-Button drückt, wird die Funktion um_btn_change(); aufgerufen und übergibt ihr, welcher Hauptmenü-Button gedrückt wurde.


ActionScript:
  1. um_btn_change = function (Arr) {
  2.     for(var i=1; i<um_btn_anzahl; i++) {    // Alle Buttons ausschalten
  3.         this["um_btn"+i]._visible = false;
  4.         this["um_btn"+i]._alpha = 0;
  5.     }
  6.     for (var i=1; i<=Arr.length; i++) {  // Den Buttons die entsprechenden Texte zuweisen (aus Array auslesen) und anschalten
  7.         this["um_btn"+i].mcTxtFeld.txtFeld.text = Arr[i-1];
  8.         this["um_btn"+i]._visible = true;
  9.     }
  10.  
  11.     var j = 1;
  12.     sID = setInterval(function () {  // die Untermenü-Buttons einfaden lassen
  13.         timeline["um_btn"+j].um_btn_fadin(4.5)// Einfade-Geschwindigkeit einstellen
  14.         j++;
  15.         if (j>=um_btn_anzahl) {
  16.                 clearInterval(sID);
  17.         }
  18.     }, 150); // Einfade-Abstand von Btn zu Btn einstellen
  19.  
  20. };
  21.  
  22.  
  23. MovieClip.prototype.um_btn_fadin = function(speed) {
  24.         this.enabled = false;
  25.         this.onEnterFrame = function() {
  26.             if (this._alpha<100) {
  27.                 this._alpha += speed;
  28.             } else {
  29.                 this.enabled = true;
  30.                 delete this.onEnterFrame;
  31.             }
  32.         }
  33. };

MeinProblem: Wenn der User 2 Hauptmenü-Buttons schnell hintereinander drückt, spinnt die Navigation!
Seht selbst: http://hb.tanzstudio-scherg.de/main.php



Vielen Dank!
__________________
Mediendesign-Student
johanness ist offline   Mit Zitat antworten
Alt 23-02-2004, 12:57   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Da würde ich sicherheitshalber auf die "harte Tour" eine Zeitschleife über einen Timer oder setIntervall von wenigen Millisekunden einbauen, die die Buttons so lange blockiert, bis der Timer abgelaufen ist.
  Mit Zitat antworten
Alt 23-02-2004, 13:22   #3 (permalink)
Flash & TYPO3
 
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 2.700
An sowas habe ich auch gedacht, aber ich weiß nicht genau wo und vor allem wie??
Kannst du mir da helfen!?
__________________
Mediendesign-Student
johanness ist offline   Mit Zitat antworten
Alt 23-02-2004, 15:59   #4 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Ich würde es etwa so lösen:
ActionScript:
  1. _global.Klickverzoegerung = 500;//Verzögerungswert in ms
  2. meineButtonInstanz.onRelease = function(){
  3.     if((this.letzterKlick+_global.Klickverzoegerung)<getTimer()){
  4.         //tu etwas wenn die Zeit abgelaufen ist, sonst reagiere nicht
  5.         this.letzterKlick = getTimer();
  6.     }   
  7. }
  Mit Zitat antworten
Alt 23-02-2004, 16:11   #5 (permalink)
Flash & TYPO3
 
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 2.700
Vielen Dank, so geht's!
MfG
johanness
__________________
Mediendesign-Student
johanness ist offline   Mit Zitat antworten
Alt 23-02-2004, 16:30   #6 (permalink)
Flash & TYPO3
 
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 2.700
Nun gut, ich habe jetzt eine Möglichkeit, um den Fehler zu übergehen! Trotzdem suche ich noch nach der Möglichkeit den Fehler zu beheben!?!?
__________________
Mediendesign-Student
johanness ist offline   Mit Zitat antworten
Alt 23-02-2004, 21:31   #7 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Neuen Rechner kaufen, schnellere Grafikkarte, anderen Prozessor... Leider sind Buttons sehr langsam...
  Mit Zitat antworten
Alt 23-02-2004, 21:34   #8 (permalink)
Flash & TYPO3
 
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 2.700
Da sind doch sicher nur irgendwelche Variabelen noch mit einem alten Wert versehen. Da geht doch sicher irgendwas!?
__________________
Mediendesign-Student
johanness ist offline   Mit Zitat antworten
Alt 24-02-2004, 11:48   #9 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Variablen halten den Film kaum auf, das sind eher die grafischen Objekte, die von MM aus Kompatibilitätsgründen nicht optimiert worden sind...
  Mit Zitat antworten
Alt 24-02-2004, 12:36   #10 (permalink)
Flash & TYPO3
 
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 2.700
Ich dache an folgendes: Die Buttons werden ja nacheinander eingefaded und n u r wenn der User drückt, wenn gerade was anderes dran ist, tritt der Feher auf. Deshalb denke ich werden irgendwelche Variablen verwendet, die evtl noch nicht resettet sind!??!
__________________
Mediendesign-Student
johanness ist offline   Mit Zitat antworten
Alt 24-02-2004, 12:38   #11 (permalink)
Flash & TYPO3
 
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 2.700
Ich hab's jetzt vorerst mal so gemacht. Da tritt der Fehler nicht mehr auf, aber man könnte sich wundern, warum man manchmal nicht klicken kann!
Deine Methode mit der Klickverzögerung hat nämlich doch nicht funktioniert!

ActionScript:
  1. // Funktion um die Bez. der Unterpunkte zu ändern
  2. um_btn_change = function (Arr) {
  3.    
  4.     // Damit es keine Probleme gibt
  5.     if(um_status != false) {
  6.         um_status = false// Jetzt fade ich gerade ein, deshalb kein neues UM zulässig
  7.  
  8.         for(var i=1; i<um_btn_anzahl; i++) {    // Alle Buttons wiederausrichten und ausschalten
  9.             this["um_btn"+i]._x = um_btn_xVal[i-1];
  10.             this["um_btn"+i]._visible = false;
  11.         }
  12.         for (var i=1; i<=Arr.length; i++) {  // Den Buttons die entsprechenden Texte zuweisen und anschalten
  13.             this["um_btn"+i].mcTxtFeld.txtFeld.text = Arr[i-1];
  14.             this["um_btn"+i].enabled = true;
  15.             this["um_btn"+i]._visible = true;      
  16.             this["um_btn"+i]._alpha = 1;
  17.         }
  18.  
  19.         var j = 1;
  20.         sID = setInterval(function () {  // die Untermenü-Buttons einfaden lassen
  21.             timeline["um_btn"+j].um_btn_fadin(4.5)// Einfade-Geschwindigkeit einstellen
  22.             j++;
  23.             if (j>=um_btn_anzahl) {
  24.                     clearInterval(sID);
  25.                     um_status = true// So ich bin fertig, es kann ein neues UM eingefadet werden
  26.             }
  27.         }, 150); // Einfade-Abstand von Btn zu Btn einstellen
  28.     } else {
  29.         delete this.onEnterFrame;
  30.     }
  31. };
  32.  
  33. MovieClip.prototype.um_btn_fadin = function(speed) {
  34.         this.enabled = false;
  35.         this.onEnterFrame = function() {
  36.             if (this._alpha<100) {
  37.                 this._alpha += speed;
  38.             } else {
  39.                 this._alpha = 100;
  40.                 this.enabled = true;
  41.                 delete this.onEnterFrame;
  42.             }
  43.         }
  44. };
__________________
Mediendesign-Student
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 08:00 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele