Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 29-08-2007, 09:20   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Beiträge: 1.244
Drehen um Mittelpunkt mit der Maus

Hi,

habe zwei MC auf der Bühne. Einen Punkt und ein Rechteck.
Jetzt möchte ich mit der Maus (onPress) das Rechteck um den Punkt kreisen.
Es sollte also immer eine gedachte Linie sein.
Punkt (Mittelpunkt) zum Rechteck zur Mausposition.

Dabei soll sich das Rechteck zum Punkt ausrichten.
Es soll also immer die gleiche Seite zum Punkt zeigen.

Meine Versuche sind alle kläglich gescheitert.
__________________
Mfg aus Brandenburg.

harego

Spiel

Zur Page
harego ist offline   Mit Zitat antworten
Alt 29-08-2007, 11:04   #2 (permalink)
Freizeitflasher
 
Benutzerbild von Alphanimal
 
Registriert seit: Jun 2004
Ort: Niederösterreich
Beiträge: 615
versteh nicht ganz was du willst aber ich versuchs mal

Du willst, dass das Rechteck immer einen Konstanten Abstand zum Punkt hat, und mit der Maus soll nur der Winkel verändert werden können?


ActionScript:
  1. radius = 120; //Abstand zwischen Punkt und Rechteck
  2.  
  3. //Abstand zwischen Maus und Punkt berechnen
  4. dx = _xmouse - punkt._x;
  5. dy = _ymouse - punkt._y;
  6. da = Math.sqrt(dx*dx + dy*dy);
  7.  
  8. if(da > 0){ //Wenn möglich...
  9.     //Vektor zwischen Punkt und Maus auf Rechteck-Abstand normieren
  10.     rect._x = punkt._x + dx/da*radius;
  11.     rect._y = punkt._y + dy/da*radius;
  12.  
  13.     //Rotation des Rechteckes anpassen
  14.     rect._rotation = Math.atan2(dy, dx)/Math.PI*180;
  15. }

hast du dir das so vorgestellt?
__________________
Some Flash Worx
Alphanimal ist offline   Mit Zitat antworten
Alt 29-08-2007, 11:47   #3 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Beiträge: 1.244
Hi,

danke dir für die Antwort.

Genauso hab ich es mir vorgestellt. Nur einen kleinen Schönheitsfehler
hat es noch. Wenn man auf das Rechteck klickt, dreht es sich ein Stück
zum Mittelpunkt, obwohl die Maus nicht bewegt wird.

http://harego.de/test_dreh/dreh2.html

Kann man das verhindern?

Das Script sieht jetzt so aus:

PHP-Code:
rect.onPress = function ()
{
    var 
radius this._x punkt._x 
    
//Abstand zwischen Punkt und Rechteck
    //Abstand zwischen Maus und Punkt berechnen
    
this.onEnterFrame = function ()
    {
        var 
dx _xmouse punkt._x;
        var 
dy _ymouse punkt._y;
        var 
da Math.sqrt (dx dx dy dy);
        if (
da 0)
        {
            
//Wenn möglich...
            //Vektor zwischen Punkt und Maus auf Rechteck-Abstand normieren
            
rect._x punkt._x dx da radius;
            
rect._y punkt._y dy da radius;
            
//Rotation des Rechteckes anpassen
            
rect._rotation Math.atan2 (dydx) / Math.PI 180;
        }
    };
};
rect.onRelease rect.onReleaseOutside = function ()
{
    
delete this.onEnterFrame;
}; 
__________________
Mfg aus Brandenburg.

harego

Spiel

Zur Page
harego ist offline   Mit Zitat antworten
Alt 29-08-2007, 12:33   #4 (permalink)
Freizeitflasher
 
Benutzerbild von Alphanimal
 
Registriert seit: Jun 2004
Ort: Niederösterreich
Beiträge: 615
var radius = this._x - punkt._x

was soll das bewirken?
dachte der abstand soll konstant sein
__________________
Some Flash Worx
Alphanimal ist offline   Mit Zitat antworten
Alt 29-08-2007, 12:51   #5 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Beiträge: 1.244
Hi,

für die Zeit des drehen bleibt er konstant.

Eigentlich soll das ganze mal so funktionieren wie hier:

http://harego.de/test_dreh/ (eimal klicken zum aktivieren)

Mit den Pfeiltasten kann man die drei MC als Block drehen.
Jetzt möchte ich über das rote Rechteck den selben Effekt erzielen.
Nur dreht sich da nur der eine MC
__________________
Mfg aus Brandenburg.

harego

Spiel

Zur Page
harego ist offline   Mit Zitat antworten
Alt 29-08-2007, 13:13   #6 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Beiträge: 1.244
Hi,

es geht im Endeffekt darum, eine variable Anzahl von MC um deren
gemeinsammen Mittelpunkt zu drehen. Die MCs kann man vor/nach dem drehen
beliebig verschieben.
__________________
Mfg aus Brandenburg.

harego

Spiel

Zur Page
harego ist offline   Mit Zitat antworten
Alt 29-08-2007, 14:34   #7 (permalink)
Freizeitflasher
 
Benutzerbild von Alphanimal
 
Registriert seit: Jun 2004
Ort: Niederösterreich
Beiträge: 615
achso... aber dann kannst du den radius nicht einfach durch eine subtraktion der X-Position berechnen.

genau wie dem Abstand zwischen Punkt und maus brauchst den pytagoras.
__________________
Some Flash Worx
Alphanimal ist offline   Mit Zitat antworten
Alt 29-08-2007, 14:44   #8 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Beiträge: 1.244
Hast du da Erfahrung und könntest da helfen?
__________________
Mfg aus Brandenburg.

harego

Spiel

Zur Page
harego ist offline   Mit Zitat antworten
Alt 29-08-2007, 15:00   #9 (permalink)
Freizeitflasher
 
Benutzerbild von Alphanimal
 
Registriert seit: Jun 2004
Ort: Niederösterreich
Beiträge: 615
//Radius berechnen
rx = rect._x - punkt._x;
ry = rect._y - punkt._y;
radius = Math.sqrt(rx*rx + ry*ry);

einfach über pytagoras den abstand berechnen. (nicht nur in X)

damit müsste der abstand dann konstant bleiben
__________________
Some Flash Worx
Alphanimal ist offline   Mit Zitat antworten
Alt 29-08-2007, 15:49   #10 (permalink)
Neuer User
 
Registriert seit: Jan 2002
Beiträge: 1.244
Danke dir erstmal für deine Mühe aber irgendwie raff ich das nicht.

Hab die mal die aktuelle Version hochgeladen.
So wie es mit den Pfeiltasten geht, sollte es in etwa sein.

Die großen Rechtecke kannst du verschieben. Der grüne Punkt sollte sich danach
automatisch zentrieren.
Bei press auf die roten Rechtecke sollten sich alle drehen wie mit den Pfeiltasten.
Angehängte Dateien
Dateityp: rar Rotation3.rar (5,3 KB, 30x aufgerufen)
__________________
Mfg aus Brandenburg.

harego

Spiel

Zur Page
harego 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 04:09 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele