Hallo,
mein Ziel ist es, ein Zahnrad als Websitemenü zu verwenden, sagen wir, es gibt 4 Links auf 0°, 90°, 180° und 270° verteilt. Ich habe es bereits geschafft, dass sich das Zahnrad als Image im MovieClip per Drag&Drop um seinen Mittelpunkt drehen lässt. Nun hätte ich es gerne, dass nach Loslassen der Maus, das Rad sich weiterdreht, bis es exakt auf einem Link steht. Dabei habe ich den Kreis in 8 Segmente unterteilt und mit rotation geguckt, wie weit sich der MovieClip gedreht hat. Wenn der User also auf 46° dreht, soll gegen den Uhrzeigersinn auf 90° gedreht werden, bei 134° soll auf 90° im Uhrzeigersinn zurückgedreht werden. (Die Richtungen sind jetzt nicht so wichtig, ich möchte nur die innere if-Verzweigung klarmachen.)
Allerdings dreht das Rad in einer Endlosschleife weiter. Fragt rotation überhaupt die Drehung vom Ursprungs-MovieClip oder immer nur von der letzten Drehung ab? Wie kann ich Bereiche eines Images oder MovieClips festlegen?
Hier der Code für die Methode:
function moveCircle(event:Event):void {
//1. Segment
if (mc\_gearwheel.rotation degree) && (mc\_gearwheel.rotation
Beste Grüße & vielen Dank im Voraus!
Franziska
Hi,
nein die Drehung hängt wohl eher von der letzten Position ab … Aber ich würde es auch eher mal mit einem Drehevent probieren und dort dort abgebremste Funktionen anhängen… ist ne Weile her bei mir, aber schau Dir mal das hier an http://livedocs.adobe.com/flash/9.0_de/ActionScriptL… . Damit kann man definierte Bewegungen an ein Objekt flanschen. Außerdem gibt es da Funktionen zum weichen abbremsen.
Grüße Stefan
http://livedocs.adobe.com/flash/9.0_de/ActionScriptL…
Das ist wohl richtiger in deinem speziellen Fall, wobei es mit dem Tween auch geht.
Hallo Franziska,
Die Stellung des Movieclips (in der Bibliothek) ist die 0°-Stellung, von der aus die Drehwinkel zählen.
Deine Frage werde ich Dir in Kürze (wahrscheinlich am Wochenende) versuchen zu beantworten. Muss es mal selber ausprobieren und abends ist für mich zu wenig Zeit dazu.
Du kannst die Rotation bei jedem gewünschten Winkel anhalten, wenn Du eine entsprechend ausgelegte if-Bedingung einsetzt.
Mit instan_mc.onEnterFrame = function() { … }
kann eine selbstlaufende Drehung gestartet werden.
Wenn eine bestimmte Winkelbedingung wahr wird, kann mit
delete instan_mc.onEnterFrame;
die Drehung beendet werden.
AS2 !!
mc.onEnterFrame = function() {
mc._rotation += 5;
if(mc._rotation >= 135) {
delete mc.onEnterFrame;
}
}
Also entweder Du hast Geduld, oder ein anderer liefert Dir zuvor die Lösung.
Mit bestem Gruß
Detlef
Jawoll! Tweeens! Genial! Zusammen mit dem Hinweis, dass rotate von -180 bis +180 zählt ist etwas ziemlich Brauchbares rausgekommen. Leider funktioniert die Drag&Drop-Funktion nicht mehr einwandfrei, obwohl ich den Listener beim Draggen remove (wattn Deutsch). Allerdings erspare ich mir jetzt die Einteilung in 8 Segmente, da sich die Tweens beidseitig annähern.
Aber danke, jetzt bin ich ein ganzes Stück weiter!
Der Code nun:
function moveCircleWithTween(event:Event):void {
// Norden
if (mc\_gearwheel.rotation 135) {
TweenLite.to(mc\_gearwheel, 1., { rotation:180} );
}
else{
var degree:int;
for (degree = -135; degree degree) && (mc\_gearwheel.rotation
Hallo Detlef,
ich denke, wir meinen verschiedene Sachen: Die Drehung soll erst durch Drag&Drop geschehen, deswegen bin ich mir jetzt nicht sicher, ob onEnterFrame hier passt. Aber ich habe es jetzt auch nicht getestet, danke trotzdem für den Hinweis! Es klappt ganz gut mit einem Tween, der zwischen -180 und 180° arbeitet und nicht zwischen 0 und 360°, wie ich anfangs hatte. Jetzt muss ich nur noch an den Listenern fummeln, dass es auch sauber läuft.
Danke dir!
Beste Grüße
Franziska
Hallo Franziska,
Du meinst startDrag() / stopDrag() Funktionalität, jedenfalls habe ich das so verstanden. Mit startDrag() könnte man das Rad_Movie ein Stück um die eigene Achse drehen. Bei stopDrag() würde dann die onEnterFrame-Funktionalität gestartet werden, die das Rad in die gewünschte Richtung eigenständig zurücklaufen lässt, wo es dann beim Erreichen des Endwinkels durch delete onEnterFrame auch wieder selber stehen bleibt.
So jedenfalls verstand ich Dein Anliegen, und so hätte ich es selber versucht zu programmieren. Da Du mit Deiner gefundenen Lösung wohl zufrieden bist, werde ich mich weiter daran versuchen.
Viel Erfolg und beste Grüße
Detlef
hi,
sorry, kann dir im moment leider auch nicht weiterhelfen.
cu
harald
************