Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 02-03-2007, 19:29   #1 (permalink)
nie-auslernender
 
Registriert seit: Jul 2001
Beiträge: 466
Koordinaten nach Rotation berechnen?

Hallo,

ich hab ein kleines Problem, bei dem ich eher vom Matheverständnis als vom Actionscript her nicht weiter komme.

Erstmal was ich hab:
Ich habe in einem MC Namens "field" eine Menge Movieclips liegen. "field" liegt auf den Koordinaten x=450 und y=300. Die MCs im "field" sind von x=- 250 bis x=250 und y=-100 bis y=100 verteilt und unterschiedlich stark skaliert.
Sobald man auf ein MC klickt, wird an dieses herangezoomt. Das ist auch weiter kein Problem. Ich skalieren "field" einfach größer und verschiebe in Richtung der Koordinaten des angeklickten MCs. Bei der Berechnung berücksichtige ich dabei noch, dass sich der Abstand durch die Skalierung verändert. Der Script sieht dazu so aus:
PHP-Code:
on(release){
        
skalfaktor=2000/(_root.field.menupunkta._xscale/100); // soll auf 2000% skaliert werden und dabei die anfangsskalierung des angeklickten menupunkts berücksichtigen
    
zielx=450-_root.field.menupunkta._x*skalfaktor/100// errechnet die x koordinate des Menupunkts nach der Skalierung
    
ziely=300-_root.wanderyaend*skalfaktor/100;
    
_root.field.tween("_xscale",skalfaktor,1.5,_root.zoomein); // Skalierung mit eine custom-ease-Funktion
    
_root.field.tween("_yscale",skalfaktor,1.5,_root.zoomein);
    
_root.field.tween("_x",zielx,1.5,_root.zoomein); // Verschiebung in Richtung des Menupunkts mit der gleichen custom-ease-Funktion
    
_root.field.tween("_y",ziely,1.5,_root.zoomein);

Bis hier hin funktioniert alles prima.

Das Problem:
Ich möchte ein zufällige Rotation beim heranzoomen einbauen. Die Rotation mit ._rotation += ... ist auch nicht das Problem. Nur zoomt er mir durch die Rotation nicht mehr auf den angeklickten Menupunkt.
Wenn ich es richtig verstehe, liegt das einfach daran, dass durch die Rotation von "field" dessen gesamtes Koordinatensystem gedreht wird. Dadurch sind die Koordinaten, die der Menupunkt hat, dann andere.
Eigentlich habe ich den Mittelpunkt von Field, den Startpunkt vom Menupunkt und den Winkel durch die Rotation. Müsste man ja ausrechnen und mit einbinden können. Nur will mir das nicht gelingen. Kann mir da mal wer weiterhelfen?


mfG Esia
__________________
it´s always the same, but most different

Geändert von esia (02-03-2007 um 20:04 Uhr)
esia ist offline   Mit Zitat antworten
Alt 02-03-2007, 22:45   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
so ganz bin ich aus deiner geschichte nicht schlau geworden.

aber schau dir mal in der flash-hilfe die befehle an:
localToGlobal
und
globalToLocal
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 03-03-2007, 12:00   #3 (permalink)
nie-auslernender
 
Registriert seit: Jul 2001
Beiträge: 466
danke für die antwort. mit localtoGlobal könnt ich mir bei den zeilen:
PHP-Code:
zielx=450-_root.field.menupunkta._x*skalfaktor/100
    
ziely=300-_root.wanderyaend*skalfaktor/100
die 450-root.field.menupunkta._x sparen, weil diese Brechnung dann localtoGlobal übernehmen würde. Kannte die Funktion auch noch garnicht, bei weitergehenden Verschachtelungen wird die mir in Zukunft aber mit Sicherheit gute Dienste leisten. Mein Problem kann ich damit, glaub ich, aber nicht lösen.

Ich glaube, ich hab mich auch etwas verwirrend ausgedrückt. ich hoffe mal, ich bekomme das jetzt besser hin.
ich muss einfach vor der Rotation wissen an welchen Koordinaten der Movieclip nach der Rotation stehen wird. In meinem Fall müsste ich dann noch die Skalierung mit berücksichtigen, aber das betrifft nicht das grundlegende Problem.
Als Beispiel: Ich habe in einem mc "field" einen Movieclip "menupunkt" auf den lokalen Koordinaten x= 25 und y = 5, wenn ich jetzt "field" um +43,5° rotiere, wie sind dann die lokalen Koordinaten von "menupunkt" nach der Rotation?
Das ist mein eigentliches Problem.


mfG Esia
__________________
it´s always the same, but most different
esia ist offline   Mit Zitat antworten
Alt 03-03-2007, 18:10   #4 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
- drehen
- localToGlobal
- zurückdrehen
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 03-03-2007, 18:14   #5 (permalink)
nie-auslernender
 
Registriert seit: Jul 2001
Beiträge: 466
versteh ich nicht.
__________________
it´s always the same, but most different
esia ist offline   Mit Zitat antworten
Alt 03-03-2007, 18:23   #6 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
Zitat:
Zitat von esia Beitrag anzeigen
Als Beispiel: Ich habe in einem mc "field" einen Movieclip "menupunkt" auf den lokalen Koordinaten x= 25 und y = 5, wenn ich jetzt "field" um +43,5° rotiere, wie sind dann die lokalen Koordinaten von "menupunkt" nach der Rotation?
Code:
var p={x:0, y:0}
field.menupunkt.loacalToGlobal(p);
field._rotation(43.5);
field.menupunkt.globalToLocal(p);
field._rotation(-43.5);
trace("x:"+p.x+" Y:"+p.y);
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 03-03-2007, 18:30   #7 (permalink)
nie-auslernender
 
Registriert seit: Jul 2001
Beiträge: 466
also dreh ichs, lese die werte aus und dreh es zurück, um es dann nochmal zu drehen. hm, auf den workaround wär ich nicht gekommen. thx.

mfg esia
__________________
it´s always the same, but most different
esia 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 20:42 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele