Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 13-12-2006, 16:35   #1 (permalink)
Dumm lebt länger
 
Benutzerbild von Vampire's Party
 
Registriert seit: Jan 2004
Ort: Sachsen
Beiträge: 425
Script "onMouseShake"- was kann man verbessern?

Hallo,

ich habe mir gerade ein kleines Script gebastelt, dass ermitteln soll, ob die Maus "geschüttelt" - also schnell hin und her - wird. Das Ergebnis stellt mich aber noch nicht vollends zufrieden. Die beiden ersten Parts der if-Abfrage in der Funktion "onenterframe_handler" ähneln sich zwar, lassen sich aber irgendwie nicht zusammenfassen. Zudem sind mir das noch irgendwie zu viele Variablen.

Hätte jmd eine Idee, wie ich das etwas "smarter" gestalten könnte?

Zum Testen: neuer Film, Code in den ersten Frame, testen. Maus drücken und schnell hin und her bewegen.

Vielen Dank schonmal...

ActionScript:
  1. var oldPos:Number;
  2. var startPos:Number;
  3.  
  4. var lastDirChange:Number;
  5. var direction:Number = 0;
  6. var changes:Number = 0;
  7. var offset:Number = 0;
  8.  
  9. this.onMouseDown = mousedown_handler;
  10. this.onMouseUp = mouseup_handler;
  11.  
  12.  
  13. function mousedown_handler ():Void
  14. {
  15.     startPos = oldPos = this._xmouse;
  16.     lastDirChange = getTimer();
  17.     this.onEnterFrame = onenterframe_handler;
  18. }
  19.  
  20. function mouseup_handler():Void
  21. {
  22.     delete this.onEnterFrame;
  23.     changes = direction = 0;
  24. }
  25.  
  26. function onMouseShake ():Void
  27. {
  28.     mouseup_handler ();
  29.     trace("Geschüttelt, nicht gerührt :)");
  30. }
  31.  
  32. function onenterframe_handler ():Void
  33. {
  34.     // hat sich die Maus seit der letzten Überprüfung
  35.     // mehr als 5px nach rechts bewegt?
  36.     if (_root._xmouse > oldPos+5)
  37.     {
  38.         if (direction != 1 && oldPos < startPos-30) // auf Richtungswechsel überprüfen
  39.         {
  40.             if (++changes > 3) onMouseShake();
  41.             direction = 1;
  42.             lastDirChange = getTimer();
  43.         }
  44.         oldPos = _root._xmouse;
  45.         offset = 0;
  46.     }
  47.     // hat sich die Maus seit der letzten Überprüfung
  48.     // mehr als 5px nach links bewegt?
  49.     else if (_root._xmouse < oldPos-5)
  50.     {
  51.         if (direction != -1 && oldPos > startPos+30) // auf Richtungswechsel überprüfen
  52.         {
  53.             if (++changes > 3) onMouseShake();
  54.             lastDirChange = getTimer();
  55.             direction = -1;
  56.         }
  57.         oldPos = _root._xmouse;
  58.         offset = 0;
  59.     }
  60.     // - [getTimer()-lastDirChange > 300] => liegt der letzte Richtungswechsel länger als 300ms zurück?
  61.     // - [offset > 5] => die Maus wurde nach sechsmaliger Überprüfung nur sehr wenig bewegt
  62.     else if (getTimer()-lastDirChange > 300 || offset > 5 && changes != 0) changes = 0;
  63.     else offset++;
  64. }
__________________
Blog
Vampire's Party ist offline   Mit Zitat antworten
Alt 13-12-2006, 17:29   #2 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Hi!

Vielleicht so ungfähr (als Ansatz):
PHP-Code:
this.onEnterFrame = function() {
    
temp mX;
    
mX _root._xmouse;
    if ((
temp-mX)*dir>25) {
        
trace("shake it baby!");
    }
    
dir temp-mX>? -1;
}; 
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager 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:23 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele