Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash MX 2004

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 14-12-2004, 17:50   #1 (permalink)
-> Tamiflu <-
 
Benutzerbild von romamon
 
Registriert seit: Oct 2004
Ort: München
Beiträge: 1.280
Es hackt...warum???

Wenn ich zu schnell zwischen den buttons hin und her klicke hackts...also der angestuerte mc stopt und reagiert nichtmehr...
Kann sich wer dieses frickelwerk meinerseits mal durchlesen, büdde?
Und sagen worans liegt und mir vielleicht sogar ne simplere Lösung sagen?

Danke schonmal fürs Lesen

PHP-Code:
var finished:Boolean true;
var 
webpressed:Boolean false;
var 
druckpressed:Boolean false;
var 
konpressed:Boolean false;
_root.web_mc.onRollOver = function() {
    if (
webpressed == false) {
        
delete _root.web_mc.onEnterFrame;
        
_root.web_mc.gotoAndPlay(1);
    }
};
_root.web_mc.onRollOut = function() {
    if (
webpressed == false) {
        
_root.web_mc.onEnterFrame = function() {
            if (
_root.web_mc._currentframe == 6) {
                
_root.web_mc.onEnterFrame = function() {
                    
_root.web_mc.prevFrame();
                    if (
_root.web_mc._currentframe == 1) {
                        
delete _root.web_mc.onEnterFrame;
                    }
                };
            }
        };
    }
};
_root.web_mc.onRelease = function() {
    if (
webpressed == false && finished == true) {
        
webpressed true;
        
druckpressed false;
        
konpressed false;
        
finished false;
        
_root.web_mc.gotoAndPlay(8);
        
                
_root.kon_mc.onEnterFrame = function() {
            
_root.kon_mc.prevFrame();
            if (
_root.kon_mc._currentframe == 1) {
                
delete _root.kon_mc.onEnterFrame;
            }
        };
        
_root.druck_mc.onEnterFrame = function() {
            
_root.druck_mc.prevFrame();
            if (
_root.druck_mc._currentframe == 1) {
                
delete _root.druck_mc.onEnterFrame;
            }
        };
    }
    
_root.leistungsrahmen_mc.onEnterFrame = function() {
        if (
_root.leistungsrahmen_mc._currentframe == 17) {
            
_root.leistungsrahmen_mc.onEnterFrame = function() {
                
_root.leistungsrahmen_mc.prevFrame();
                if (
_root.leistungsrahmen_mc._currentframe == 2) {
                    
_root.leistungsrahmen_mc.play();
                    
finished true;
                    
delete _root.leistungsrahmen_mc.onEnterFrame;
                }
            };
        }
    };
};

_root.druck_mc.onRollOver = function() {
    if (
druckpressed == false) {
        
delete _root.druck_mc.onEnterFrame;
        
_root.druck_mc.gotoAndPlay(1);
    }
};
_root.druck_mc.onRollOut = function() {
    if (
druckpressed == false) {
        
_root.druck_mc.onEnterFrame = function() {
            if (
_root.druck_mc._currentframe == 6) {
                
_root.druck_mc.onEnterFrame = function() {
                    
_root.druck_mc.prevFrame();
                    if (
_root.druck_mc._currentframe == 1) {
                        
delete _root.druck_mc.onEnterFrame;
                    }
                };
            }
        };
    }
};
_root.druck_mc.onRelease = function() {
    if (
druckpressed == false && finished == true) {
        
druckpressed true;
        
webpressed false;
        
konpressed false;
        
finished false;
        
_root.druck_mc.gotoAndPlay(8);
        
                
_root.kon_mc.onEnterFrame = function() {
            
_root.kon_mc.prevFrame();
            if (
_root.kon_mc._currentframe == 1) {
                
delete _root.kon_mc.onEnterFrame;
            }
        };
        
_root.web_mc.onEnterFrame = function() {
            
_root.web_mc.prevFrame();
            if (
_root.web_mc._currentframe == 1) {
                
delete _root.web_mc.onEnterFrame;
            }
        };
    }
    
_root.leistungsrahmen_mc.onEnterFrame = function() {
        if (
_root.leistungsrahmen_mc._currentframe == 17) {
            
_root.leistungsrahmen_mc.onEnterFrame = function() {
                
_root.leistungsrahmen_mc.prevFrame();
                if (
_root.leistungsrahmen_mc._currentframe == 2) {
                    
_root.leistungsrahmen_mc.play();
                    
finished true;
                    
delete _root.leistungsrahmen_mc.onEnterFrame;
                }
            };
        }
    };
};
_root.kon_mc.onRollOver = function() {
    if (
konpressed == false) {
        
delete _root.kon_mc.onEnterFrame;
        
_root.kon_mc.gotoAndPlay(1);
    }
};
_root.kon_mc.onRollOut = function() {
    if (
konpressed == false) {
        
_root.kon_mc.onEnterFrame = function() {
            if (
_root.kon_mc._currentframe == 6) {
                
_root.kon_mc.onEnterFrame = function() {
                    
_root.kon_mc.prevFrame();
                    if (
_root.kon_mc._currentframe == 1) {
                        
delete _root.kon_mc.onEnterFrame;
                    }
                };
            }
        };
    }
};
_root.kon_mc.onRelease = function() {
    if (
konpressed == false && finished == true) {
        
konpressed true;
        
webpressed false;
        
druckpressed false;
        
finished false;
        
_root.kon_mc.gotoAndPlay(8);
        
                
_root.druck_mc.onEnterFrame = function() {
            
_root.druck_mc.prevFrame();
            if (
_root.druck_mc._currentframe == 1) {
                
delete _root.druck_mc.onEnterFrame;
            }
        };
        
_root.web_mc.onEnterFrame = function() {
            
_root.web_mc.prevFrame();
            if (
_root.web_mc._currentframe == 1) {
                
delete _root.web_mc.onEnterFrame;
            }
        };
    }
    
_root.leistungsrahmen_mc.onEnterFrame = function() {
        if (
_root.leistungsrahmen_mc._currentframe == 17) {
            
_root.leistungsrahmen_mc.onEnterFrame = function() {
                
_root.leistungsrahmen_mc.prevFrame();
                if (
_root.leistungsrahmen_mc._currentframe == 2) {
                    
_root.leistungsrahmen_mc.play();
                    
finished true;
                    
delete _root.leistungsrahmen_mc.onEnterFrame;
                }
            };
        }
    };
}; 
romamon ist offline   Mit Zitat antworten
Alt 14-12-2004, 17:55   #2 (permalink)
Pending…
 
Benutzerbild von psyk
 
Registriert seit: Jul 2002
Ort: Hamburg
Beiträge: 3.866
Also ich würde das in eine fot Schleife packen dann ist das AS um ein drittel kleine, zumindest die RollOver/Out Events.
__________________
:: Warum einfach, wenn's auch kompliziert geht! ::
psyk ist offline   Mit Zitat antworten
Alt 14-12-2004, 18:06   #3 (permalink)
Pending…
 
Benutzerbild von psyk
 
Registriert seit: Jul 2002
Ort: Hamburg
Beiträge: 3.866
Kannst du noch was zum BTN-verhalten sagen? Wenn ich dein AS richtig gelesen hab möchtest du wenn herausbekommen ob ein BTN gedrückt ist.
__________________
:: Warum einfach, wenn's auch kompliziert geht! ::
psyk ist offline   Mit Zitat antworten
Alt 14-12-2004, 18:21   #4 (permalink)
Pending…
 
Benutzerbild von psyk
 
Registriert seit: Jul 2002
Ort: Hamburg
Beiträge: 3.866
Hier erst mal die verkürzte Form vom RollOver/Out Event.
Ist aber nur Theorie mit der fla wäre es einfache da durch zu sehen.
ActionScript:
  1. var finished:Boolean = true;
  2. var pressed0:Boolean = false;
  3. var pressed1:Boolean = false;
  4. var pressed2:Boolean = false;
  5. var i:Number;
  6. for (i=0; i<=2; i++) {
  7.     _root["dein"+i+"_mc"].ID = i;
  8.     _root["dein"+i+"_mc"].onRollOver = function() {
  9.         if (pressed[this.ID] == false) {
  10.             delete this.onEnterFrame;
  11.             this.gotoAndPlay(1);
  12.         }
  13.     };
  14.     _root["dein"+i+"_mc"].onRollOut = function() {
  15.         if (pressed[this.ID] == false) {
  16.             this.onEnterFrame = function() {
  17.                 if (this._currentframe == 6) {
  18.                     this.onEnterFrame = function() {
  19.                         this.prevFrame();
  20.                         if (this._currentframe == 1) {
  21.                             delete this.onEnterFrame;
  22.                         }
  23.                     };
  24.                 }
  25.             };
  26.         }
  27.     };
  28. }
__________________
:: Warum einfach, wenn's auch kompliziert geht! ::
psyk ist offline   Mit Zitat antworten
Alt 14-12-2004, 18:29   #5 (permalink)
-> Tamiflu <-
 
Benutzerbild von romamon
 
Registriert seit: Oct 2004
Ort: München
Beiträge: 1.280
danke erstmal für die mühe...

ich hab also 3 buttons die alle ganz druchspielen sollen... also so wie der "vorwärts/rückwärts" button ausm tutorials Bereich nur spielt der button ganz durch und geht dann erst zurück.

Wenn der button gedrückt wurde, spielt der button ausgehend vom Over Status ab und wenn am endstatus angekommen ist bleibt er stehen und ist nichtmehr für Rollover und rollout empfänglich, leider für das draufklicken an und für sich schon d.h. wenn man 2mal hinterinander draufdrückt wird der mc der durch den Button gesteuert wird auch 2mal mit der Funktion "gehe zurück zu Frame 2 und dort angelangt spiel ab" tangiert, wenn man das zu schnell macht bleibt der angesteuerte mc einfach stehen.

selbiges passiert wenn man schnell hintereinander 2 verschiednene buttons anklickt.

Genau das soll ja eigentlich mit den 3 "pressed vars" und der "finished var" vermieden werden...
Die "finished var" soll den buttons sagen, dass sie solange der MC noch läuft,
sie den MC nicht ansteuern können, so das sich die einzelnen buttons nicht in die Quere kommen. Die "pressed vars" sollen den buttons sagen, wann sie gedrückt wurden und verhindern das sie nochmal gedrückt werden können.
Wenn ein button gedrückt wird gibt er automatisch an die anderen beiden den Befehl sich wieder zurück zu Frame 1 zu bewegen wo sie dann wieder rollover und Rollout haben und auch der entsprechnden "pressed var" false ist und somit der button beim klicken wieder funktion hat.
leider klappt das mit den Vars nicht

Zur Info am Ende des Mcs der angesteuert werden soll ist ein weiterer MC der eben prüft welcher button gedrückt wurde und sich danach auf den richtigen Frame bewegt.

Is blöd zu erklären ich weiss, hoffe ich konnte mich verständlich ausdrücken
romamon ist offline   Mit Zitat antworten
Alt 14-12-2004, 18:38   #6 (permalink)
Pending…
 
Benutzerbild von psyk
 
Registriert seit: Jul 2002
Ort: Hamburg
Beiträge: 3.866
Stell mal bitte die fla rein, damit ich zwischendurch prüfen kann was ich da verzappe.
__________________
:: Warum einfach, wenn's auch kompliziert geht! ::
psyk ist offline   Mit Zitat antworten
Alt 14-12-2004, 18:40   #7 (permalink)
-> Tamiflu <-
 
Benutzerbild von romamon
 
Registriert seit: Oct 2004
Ort: München
Beiträge: 1.280
Zitat:
Zitat von psyk
Hier erst mal die verkürzte Form vom RollOver/Out Event.
Ist aber nur Theorie mit der fla wäre es einfache da durch zu sehen.
ActionScript:
  1. var finished:Boolean = true;
  2. var pressed0:Boolean = false;
  3. var pressed1:Boolean = false;
  4. var pressed2:Boolean = false;
  5. var i:Number;
  6. for (i=0; i<=2; i++) {
  7.     _root["dein"+i+"_mc"].ID = i;
  8.     _root["dein"+i+"_mc"].onRollOver = function() {
  9.         if (pressed[this.ID] == false) {
  10.             delete this.onEnterFrame;
  11.             this.gotoAndPlay(1);
  12.         }
  13.     };
  14.     _root["dein"+i+"_mc"].onRollOut = function() {
  15.         if (pressed[this.ID] == false) {
  16.             this.onEnterFrame = function() {
  17.                 if (this._currentframe == 6) {
  18.                     this.onEnterFrame = function() {
  19.                         this.prevFrame();
  20.                         if (this._currentframe == 1) {
  21.                             delete this.onEnterFrame;
  22.                         }
  23.                     };
  24.                 }
  25.             };
  26.         }
  27.     };
  28. }
ja wüsste jetzt auch ne wie ich das da genau einbauen soll...
kann ich dir die FLA per Email zuschicken, wenns dir recht is? is schwierig das aus der FLA auszubauen, und die is zu groß zum anhängen ins Forum.
Wär echt sehr nett wenn du mal kurz drüber schauen könntest
Wenn ja schick mir einfach kurz deine email per pm oder mailformular...
romamon 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 00:49 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele