Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07-09-2007, 16:23   #1 (permalink)
Slotentwickler
 
Benutzerbild von Yooda
 
Registriert seit: Mar 2004
Ort: Herten
Beiträge: 62
Rotieren eines Bildes?

Hallo ihr lieben,

ich habe wiedereinmal etwas, was mir Kopfzerbrechen bereitet.
Ich habe ein rundes Element in Photoshop gezeichnet.

Dieses möchte ich jetzt in Flash drehen lassen (möglichst ohne die häßlichen Drehungszacken).

Ich habe es als PNG exportiert, in Flash eingebaut, in AS dann den _rotation Wert in einem Intervall erhöht bzw. runtergezählt.
ALlerdings Rotiert das Bild scheinbar nicht um den Mittelpunkt, sondern um die linke obere Ecke. Wie kann ich ein Bild (möglichst schön) um seinen Mittelpunkt rotieren lassen?


Viele Grüße

David
Yooda ist offline   Mit Zitat antworten
Alt 07-09-2007, 16:28   #2 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Das Bild einfach im MovieClip mittig ausrichten (kleines Kreuz im mc muss in der Mitte der Grafik sitzen).
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 07-09-2007, 16:29   #3 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Erstmal den Registrierungspunkt in die Mitte. Dann mal gucken, wie's so aussieht.
Falls es dir dann noch immer nicht gefällt, nicht einfach _rotation benutzen, sondern die Matrix-Klasse mit dazu nehmen.

Gab's hier auch gerade das Problem:

mc um 360° SEHR langsam drehen aber flüssig!
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 07-09-2007, 16:29   #4 (permalink)
Neuer User
 
Registriert seit: Feb 2002
Beiträge: 34
Du wählst das Bild aus, drückst F8 (Objekt erstellen) und Dopelklickst auf das neueerstellte Objekt.

Jetzt einfach Strg-Alt-8 (an Bühne ausrichten), Strg-Alt-2 (Horizontal zentrieren) und dann Strg-Alt-5 (Vertikal zentrieren) drücken.
Lebbomatic ist offline   Mit Zitat antworten
Alt 07-09-2007, 16:30   #5 (permalink)
Slotentwickler
 
Benutzerbild von Yooda
 
Registriert seit: Mar 2004
Ort: Herten
Beiträge: 62
Hi,

danke erstmal für die Antwort.
Und eine Möglichkeit, dass die häßlichen "Drehzacken" nicht erscheinen?
gibts da auch eine Möglichkeit?

Viele Grüße

David
Yooda ist offline   Mit Zitat antworten
Alt 07-09-2007, 16:33   #6 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Zitat:
Und eine Möglichkeit, dass die häßlichen "Drehzacken" nicht erscheinen?
Den Link vom Frager erst einmal abchecken...
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 07-09-2007, 16:34   #7 (permalink)
Slotentwickler
 
Benutzerbild von Yooda
 
Registriert seit: Mar 2004
Ort: Herten
Beiträge: 62
Jo, bin gerade dabei.

Ich meld mich mal gleich

Danke erstmal.
Yooda ist offline   Mit Zitat antworten
Alt 07-09-2007, 16:42   #8 (permalink)
Slotentwickler
 
Benutzerbild von Yooda
 
Registriert seit: Mar 2004
Ort: Herten
Beiträge: 62
So, also die Rotation läuft schonmal. Ausrichtung ist auch erfolgt. Verwebde auch die Matrik-Klasse. Nur: Die Ränder verwischen ziemlich.

In Photoshop kann man es ja auch "gerendert" rotieren.
Gibt es kein Format, welches mir das irgendwie eine besseres Ergebnis liefert?


Viele Grüße

David
Yooda ist offline   Mit Zitat antworten
Alt 07-09-2007, 16:48   #9 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Mach mal einen Rechtsklick auf die Grafik in der Bibliothek und guck mal unter Eigenschaften, ob da "glätten zulassen" angehakt ist.
Falls nicht, mal anhaken und gucken, ob's was bringt.
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 07-09-2007, 16:50   #10 (permalink)
Slotentwickler
 
Benutzerbild von Yooda
 
Registriert seit: Mar 2004
Ort: Herten
Beiträge: 62
Absolut verschärft!
Es haut richtig gut hin.

Super !!!

Danke
Yooda ist offline   Mit Zitat antworten
Alt 07-09-2007, 17:01   #11 (permalink)
Slotentwickler
 
Benutzerbild von Yooda
 
Registriert seit: Mar 2004
Ort: Herten
Beiträge: 62
noch eine letzte Frage.

Wenn ich das Bild um exakt 1° drehen möchte, welche Einstellung wäre da in der Rotation ratsam?
Grund hierfür ist, dass ich die Drehung gezielt stoppen möchte.


Bis jetzt sieht das ganze so aus:

Code:
import flash.geom.Matrix;
import flash.geom.Transform;
var fotosTrans:Transform = new Transform(fotos);
var mymatrix:Matrix = new Matrix();



function dreh_element(bis){
var hochzaehler = 0;
var speed 		= 0;
tf = setInterval(tfunc = function(){
	old_x = fotos._x;
	old_y = fotos._y;
	
	if(hochzaehler < 100){
	  speed = speed - 0.007;
	  }
	  else if(hochzaehler >= 100 && hochzaehler < 200){ 
		      speed = speed + 0.007;
	  		 }
			 else if(hochzaehler == 150){
				    speed = 0;
				   }
	
	
	mymatrix.rotate(speed);//mymatrix.rotate(-0.00099);hier spielen
	fotosTrans.matrix = mymatrix;
	fotos._x = old_x;
	fotos._y = old_y;
	
	hochzaehler++;
},50);	
}


dreh_element(1);

Viele Grüße

David

Geändert von Yooda (07-09-2007 um 17:05 Uhr)
Yooda ist offline   Mit Zitat antworten
Alt 10-09-2007, 16:31   #12 (permalink)
Neuer User
 
Registriert seit: Jan 2007
Beiträge: 8
also ich könnte dir code zum drehen anbieten, da muss aber der registrierungspunkt oben links sein... da gehört er zum ordentlichen Coden auch hin ;P

Code:
var rotation:Number = 225;
rotate_pos = function(){
	if (rotation == 225){
		x_num = Aequ_mc._x + Aequ_mc._width/2;
		y_num = Aequ_mc._y + Aequ_mc._height/2;
		r_num = Math.sqrt((Aequ_mc._height*Aequ_mc._height+Aequ_mc._width*Aequ_mc._width))/2;
	}
	rotation+=5;
	if (rotation == 585){
		rotation = 225;
	}
	Aequ_mc._rotation = rotation-225;
	Aequ_mc._x = r_num * Math.cos(Math.PI * rotation/ 180) + x_num;
	Aequ_mc._y = r_num * Math.sin(Math.PI * rotation/ 180) + y_num;
}
Auqu_mc war mein zu drehender MovieClip mit rotation += 5 kannste ne 1 draus machen und schon hast du deinen Grad
In die andere Richtung bekommst du sicher selbst hin :>

achja, das ganze hab ich in einem Interval... stoppen kann man das dann indem du den Interval killst wenn "rotation" deinen bestimmten Wert erreicht hat

Grüße,

Xavyre Wryn

Geändert von Xavyre Wryn (10-09-2007 um 16:35 Uhr)
Xavyre Wryn ist offline   Mit Zitat antworten
Alt 30-11-2007, 06:09   #13 (permalink)
kugelschreiber
 
Benutzerbild von ronnydrechsler
 
Registriert seit: Jun 2001
Ort: Bad Düben
Beiträge: 202
Hallo Ihr Lieben,

@Xavyre Wryn einfach Klasse Dein Code:
Code:
var rotation:Number = 225;
rotate_pos = function(){
	if (rotation == 225){
		x_num = Aequ_mc._x + Aequ_mc._width/2;
		y_num = Aequ_mc._y + Aequ_mc._height/2;
		r_num = Math.sqrt((Aequ_mc._height*Aequ_mc._height+Aequ_mc._width*Aequ_mc._width))/2;
	}
	rotation+=5;
	if (rotation == 585){
		rotation = 225;
	}
	Aequ_mc._rotation = rotation-225;
	Aequ_mc._x = r_num * Math.cos(Math.PI * rotation/ 180) + x_num;
	Aequ_mc._y = r_num * Math.sin(Math.PI * rotation/ 180) + y_num;
}
Aber ich verstehe nicht die beiden Werte 255 und 585?
Kannst Du mir die verstädlich erklären?

Gruß Kuli
__________________
________________
Und grüßt die Tage, ich komm wieder keine Frage...:)
Oder Ihr kommt zu mir? | Bock auf n 1/4 Meile Rennen? | Alle Termine Race@Airport german series (R)
ronnydrechsler ist offline   Mit Zitat antworten
Alt 30-11-2007, 15:09   #14 (permalink)
Neuer User
 
Registriert seit: Jan 2007
Beiträge: 8
Naja 225° sind 5/8 von 360°, das ist genau der Winkel, an dem sich die obere linke Ecke des Movieclips befindet, wenn er waagerecht steht.
0° wäre bei einer analogen Uhr bei 15 min, 225° wären dann bei 52,5min.
Ich brauche den exakten Winkel um dann bei
Code:
	Aequ_mc._x = r_num * Math.cos(Math.PI * rotation/ 180) + x_num;
	Aequ_mc._y = r_num * Math.sin(Math.PI * rotation/ 180) + y_num;
die x- und y- Werte neu zu errechnen. Flash dreht ja immer um den Registrierungspunkt. Damit es so aussieht, als wenn um das Zentrum des MovieClips gedreht werden würde, müssen die x- und y- Positionen entsprechend geändert werden.
Verwirrend ist vielleicht der folgende Part:
Code:
	Aequ_mc._rotation = rotation-225;
aber das ist verständlich, denn Flash setzt die 0° dahin, wie der MovieClip am Anfang ausgerichet ist.

Warum 585? Das ist 225 + 360, also genau eine Drehung. Dann kann man "rotation" also statt 585 auch 225 benutzen, das hält die Variable klein und würde einen (unrealistischen) Überlauf des integer Bereiches verhindern wenn "rotation" irgendwann zu groß wird.

Grüße,

Xavyre Wryn
Xavyre Wryn 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 03:33 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele