Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 28-09-2009, 10:31   #1 (permalink)
lebt in stereo
 
Benutzerbild von figure8
 
Registriert seit: Mar 2008
Ort: karlsruhe
Beiträge: 1.093
pah, mathe :) (rotation & inertia)

heyho,
ich steh mal wieder auf meinem mathematischen schlauch und komme nicht weiter. ich bastel gerade einen kompass nach, dessen nadel abhängig von der mausposition ist. ziemlich simple geschichte, aber ich wollte das natürlich alles ein bißchen pimpen und hab mir - dafür reicht mein mathe noch - einen inertia-effekt gebastelt. das problem ist, dass wenn die nadel bei -180 grad steht, sie auf 180 grad springt und der inertia effekt diesen wechsel natürlich tweened. die nadel rotiert also einmal komplett um 360°, bevor ihre position wieder passt. was könnte man da machen?

code & beispiel:

beispiel: click!
anderes beispiel, wo man den wechsel deutlicher sieht: click!

ActionScript:
  1. var spring:Number = 0.05;
  2. var inertia:Number = 0.8;
  3. var distDegrees:Number = 0;
  4.  
  5. clip.addEventListener(Event.ENTER_FRAME, movement);
  6.  
  7. function movement(event:Event):void {
  8.     var distX:Number = mouseX - clip.x;
  9.     var distY:Number = mouseY - clip.y;
  10.  
  11.     var radians:Number = Math.atan2(distY,distX);
  12.     var degrees:Number = (radians / (Math.PI / 180));
  13.    
  14.     distDegrees = ((degrees - clip.rotation) * spring) + (distDegrees * inertia);
  15.  
  16.     clip.rotation += distDegrees;
  17. }

sobald ihr mit der maus links vom clip über die linie geht springt er, unten seht ihr einige status-felder - da springt die gradzahl von -179 auf +179 und der inertia-effekt dreht durch. aber leider hab ich keine ahnung, wie ich das verhindern kann - einfach den wert umzudrehen macht natürlich keinen sinn, weil er dann schon ab der mitte verkehrtherum läuft.

muss ich mein script irgendwie umbasteln? dankeschön schonmal!

ach ps: wenn die nadel dann unkontrolliert rotiert einfach die maus rechts vom clip lassen, dann pendelt sie sich wieder ein
__________________
* Flash-JunkieMusiker & Grafiker

# Marvin Blase
# Speaker, Author, Silly Billy.
# @beautifycode

Geändert von figure8 (28-09-2009 um 10:44 Uhr)
figure8 ist offline   Mit Zitat antworten
Alt 28-09-2009, 11:40   #2 (permalink)
[+]
 
Benutzerbild von André Michelle
 
Registriert seit: Dec 2002
Ort: cologne
Beiträge: 2.271
Oh, da habe ich noch was ganz Altes auf meinem Server rumliegen:

http://recycle.andre-michelle.com/fl...gle.easing.swf
http://recycle.andre-michelle.com/fl...gle.easing.fla

Das macht genau das...
__________________
aM

blog | laboratory | tonfall | processing

Audiotool.com
André Michelle ist offline   Mit Zitat antworten
Alt 28-09-2009, 12:27   #3 (permalink)
muh
 
Benutzerbild von Janoscharlipp
 
Registriert seit: Apr 2002
Ort: Freiburg / Stuttgart
Beiträge: 4.338
Guck mal in dem Thread, mit der letzten Funktion könntest du deine Winkeldifferenz ersetzen, dann sollte es passen. Die Richtung ermitteltst du dann einfach mit dem Vorzeichen von distDegrees.

EDIT: oh, André war schneller
__________________
»Carpe diem«, sagte der Graf. (Terry Pratchett: Ruhig Blut!)
Janoscharlipp ist offline   Mit Zitat antworten
Alt 28-09-2009, 13:10   #4 (permalink)
lebt in stereo
 
Benutzerbild von figure8
 
Registriert seit: Mar 2008
Ort: karlsruhe
Beiträge: 1.093
hey ihr beiden,
vielen dank für eure antworten!

@andré: das schaut technisch gesehen natürlich cool aus, allerdings bekomme ich's nicht wirklich auf mein rotations-gedöns angewendet.. hätte ich im mathe gk damals mal besser aufgepasst ich sehe, dass wenn ich deine beiden zeilen, in denen du die differenz < || > PI abfragst, auskommentiere das gleiche problem auftaucht wie bei mir - nur gelingt mir patou die adaption nicht.

@Janoscharlipp: fast gleiches spiel - dieses mathezeugs ist für mich fast wie bömische dörfer
__________________
* Flash-JunkieMusiker & Grafiker

# Marvin Blase
# Speaker, Author, Silly Billy.
# @beautifycode

Geändert von figure8 (28-09-2009 um 13:17 Uhr)
figure8 ist offline   Mit Zitat antworten
Alt 28-09-2009, 13:14   #5 (permalink)
[+]
 
Benutzerbild von André Michelle
 
Registriert seit: Dec 2002
Ort: cologne
Beiträge: 2.271
Wo ist das Problem?

Code:
function movement(event:Event):void {
    var distX:Number = mouseX - clip.x;
    var distY:Number = mouseY - clip.y;
 
    var radians:Number = Math.atan2(distY,distX);
    var degrees:Number = (radians / (Math.PI / 180));
   
   var diff: Number = degrees - clip.rotation;
   
   if( diff < -180.0 ) diff += 360.0;
   if( diff >  180.0 ) diff -= 360.0;
   
    distDegrees = ( diff * spring) + (distDegrees * inertia);
 
    clip.rotation += distDegrees;
}
__________________
aM

blog | laboratory | tonfall | processing

Audiotool.com
André Michelle ist offline   Mit Zitat antworten
Alt 28-09-2009, 13:22   #6 (permalink)
lebt in stereo
 
Benutzerbild von figure8
 
Registriert seit: Mar 2008
Ort: karlsruhe
Beiträge: 1.093
oje, peinlich - natürlich! ich hatte bei meiner differenz-rechnung gerade mit dem bogenmaß gearbeitet und vergessen, die momentane rotation umzuwandeln. aber so ist´s natürlich noch einfacher.

vielen dank andré, bist du zufällig auf der webtech09? dann kriegst du ein bier oder kaffee von mir
__________________
* Flash-JunkieMusiker & Grafiker

# Marvin Blase
# Speaker, Author, Silly Billy.
# @beautifycode
figure8 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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Mathe-Bug? _Hannes_ ActionScript 1 2 03-05-2005 08:47
Mathe Mathe Mathe sauerkraut ActionScript 1 5 22-01-2004 15:10
mathe ?! WeedFlasher ActionScript 1 0 25-10-2002 15:05
ähm Mathe Springfielder ActionScript 1 9 04-01-2002 11:13
mathe dr.pug ActionScript 1 4 16-11-2001 12:38


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:09 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele