kostenloser Webspace werbefrei: lima-city


Flash: Objekt-Rotation bei Rollover

lima-cityForumDie eigene HomepageFlash und Silverlight

  1. Autor dieses Themas

    gki2003

    Kostenloser Webspace von gki2003, auf Homepage erstellen warten

    gki2003 hat kostenlosen Webspace.

    Hey Leute,

    ich hab ein Problem beim ActionScript 2 in Flash.
    Und zwar habe ich ein Menu, das von einer art Rundglas abgedeckt wird, man kann die Buttons also noch sehen. Beim Rollover über die Menüelemente soll dann eine Lücke in dem Glas zu diesem Element wandern, sodass alles andere außer diesem Element weiterhin abgedeckt bleibt. Dasselbe gilt für alle anderen Elemente in diesem Menü. Sprich: Die Lücke rotiert immer zu dem Element, das gerade "überfahren" wird ...

    Jetzt bin ich mit ActionScript soweit gekommen, dass die Lücke sich beim RollOver über dem Element positioniert, jedoch ist keinerlei fließende Animation da.
    So war meine Idee, dass ich beim RollOver den aktuellen Rotationswert des Glasoverlays um 1 vergrößere oder verkleinere (while-Schleife), bis ich bei der gewünschten Position angekommen bin.

    Alle meine Versuche diesbezüglich sind jedoch gescheitert, weshalb ich so langsam echt am verzweifeln bin. Was muss ich eingeben, damit die Scheibe beim RollOver rotiert ?

    PS: ich möchte wenn möglich keine Keyframe-Basierten Animationen ala gotoAndPlay benutzen.
    Wär echt super, wenn jemand weiter wüsste, da mir als Anfänger inzwischen echt die Ideen ausgehen ^^"

    edit:
    Hier nochmal zum besseren Verständnis der Code, mit dem ich versucht habe das Ganze umzusetzen:

    on (rollOver) {
    	while (_root.glass.glass.rotation < 9) {
    		getProperty(_root.glass.glass,_rotation);
    		_root.glass.glass.rotation ++;
    	}
    }


    Beitrag zuletzt geändert: 3.5.2009 18:32:15 von gki2003
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. hurricane3991

    hurricane3991 hat kostenlosen Webspace.

    was hast du denn gegen keyframes? naja jedenfalls ist das erste was mir aufgefallen ist, das da immer "glass.glass" steht. Ich weiß nicht ganz wie das in AS2 ist aber kann man da einfach so 2 mal den selben namen verwenden? Reicht da nicht _root.glass._rotation? Da es aber ja soweit funktioniert wird es wohl nicht daran liegen. Aber wird die schleife langsam genug durchlaufen, sodass man überhaupt noch was sieht? weil wenn die einmal alle 5 ms durchlaufen wird ist da zwar eine animation aber halt nicht sichtbar. Da kenne ich micht jetzt nicht so genau aus, da ich keyframes bevorzuge ;) Vielleicht kann man die schleife irgendwie verlangsamen
  4. Autor dieses Themas

    gki2003

    Kostenloser Webspace von gki2003, auf Homepage erstellen warten

    gki2003 hat kostenlosen Webspace.

    Keyframes möcht ich nicht gern benutzen weil mich das in meiner Flexibilität mehr oder weniger einschränkt, deshalb mach ich das lieber mit AS, denn da kann ich ja quasi 'machen was ich will' ^^

    Das Problem ist aber mit der Schleife, dass diese erst abgearbeitet wird, bevor eine Anmiation dargestellt wird, deshalb nützt mir das am Ende auch nicht viel.
    Ich bin jetzt schon soweit gekommen, dass ich beim RollOver das 'Glas' um jeweils 1° in die entsprechende Richtung torieren lassen kann. Umgesetzt hab ich das ganze jetzt mit nem onEnterFrame innerhalb eines onClipEvent. Jedoch komm ich nun wieder nicht weiter, da die Animation eben nicht flüssig sondern auch wieder nur schrittweise ausgeführt wird ... da würde mir wie gesagt ne SChleife gut weiterhelfen, nur dass nach jedem Ausführen der Schleife eben animiert wird ... aber das geht ja nicht ...

    Das ist mein Dilemma ... ich hoffe mir kann da jemand helfen ... ^^

    edit:

    _root.glass.glass._rotation deshalb, weil es das symbol 'glass' innerhalb der klasse 'glass' ist. ich könnte im prinzip auch nur die klasse 'glass' angeben ... so spreche ich jetzt direkt das objekt an, also den MC

    Beitrag zuletzt geändert: 4.5.2009 19:36:10 von gki2003
  5. sonok

    Moderator Kostenloser Webspace von sonok

    sonok hat kostenlosen Webspace.

    hallo!

    naja, bei einer while-schleife dauert die animation eben so lange, wie dein rechner fürs rendern braucht. entweder du packst einen timer mit hinein, der eine pause erzwingt, oder du machst es gleich per timer.
    dazu den knopf mit einem mouseover und mouseout - listener versehen, der dann auf eine funktion verweißt, die einen timer innehat. am besten ist (meiner meinung nach), wenn man die animation insgesamt an ein array koppelt, denn dann kann man die jeweilige mouse-event-funktion noch mit einer unterbrechung des jeweilig anderen timers versehen und den eigentlichen timer dort einsetzten lassen, wo die andere aufhörte.
    jaja, ich weiß, kling sehr logisch, also

    mause geht über den knopf
    - wenn ein timer läuft, diesen stoppen
    - timer starten mit dem wert des anderen timers
    - mit jedem erneutem durchlauf des timers ändert sich die °-zahl; diese °-zahl wird zudem in einer variablen gespeichert

    maus geht vom knopf weg
    - den laufenden timer stoppen
    - timer starten mit der variablen, wo die aktuelle °-zahl gespeichert ist
    - mit jedem erneutem durchlauf des timers ändert sich die °-zahl; diese °-zahl wird zudem in einer variablen gespeichert

    ist das verständlicher?
  6. Autor dieses Themas

    gki2003

    Kostenloser Webspace von gki2003, auf Homepage erstellen warten

    gki2003 hat kostenlosen Webspace.

    Oh jetzt wirds interessant ^^

    Die Idee mit dem Array find ich gut, da hab ich im ersten Moment selbst gar nicht dran gedacht ... wäre sicher sehr hilfreich ...
    Nachvollziehbar ist deine Idee auch, jedoch habe ich jeher grundsätzliuch Probleme mit Timern gehabt. Weiß nich woran das liegt, aber Timer sind auf mich meist nicht gut zu sprechen, deswegen habe ich was das angeht relativ 'null' anwendungserfahrung.

    Also mein Code, mit dem das Menu ruckelartig funktioniert, sieht momentan fogendermaßen aus:
    (Wie ich dort nen Timer einsetzen sollte, ist mir ein Rätsel ... wobei ich glaube, dass der Code dann wieder anders aussehen müsste, oder ?! ^^

    onClipEvent (enterFrame) {
    
    	_root.homebtn.onRollOver = function () {
    		getProperty(_root.glass.glass,_rotation);
    		if (_root.glass.glass._rotation < 9) {
    			_root.glass.glass._rotation ++;
    		}
    		else if (_root.glass.glass._rotation > 10) {
    			_root.glass.glass._rotation --;
    		}
    	}
    
    	_root.galerybtn.onRollOver = function() {
    		getProperty(_root.glass.glass,_rotation);
    		if (_root.glass.glass._rotation < 22) {
    			_root.glass.glass._rotation ++;
    		}
    		else if (_root.glass.glass._rotation > 23) {
    			_root.glass.glass._rotation --;
    		}
    
    	}
    
    	_root.digitalbtn.onRollOver = function() {
    		getProperty(_root.glass.glass,_rotation);
    		if (_root.glass.glass._rotation < 34) {
    			_root.glass.glass._rotation ++;
    		}
    		else if (_root.glass.glass._rotation > 35) {
    			_root.glass.glass._rotation --;
    		}
    
    	}
    
    	_root.infobtn.onRollOver = function() {
    		getProperty(_root.glass.glass,_rotation);
    		if (_root.glass.glass._rotation < 47) {
    			_root.glass.glass._rotation ++;
    		}
    	}
    }


    Beitrag zuletzt geändert: 5.5.2009 0:01:07 von gki2003
  7. sonok

    Moderator Kostenloser Webspace von sonok

    sonok hat kostenlosen Webspace.

    hm, was passiert den bei "_rotation < 9", zb? ich kann mir das gerade gar nicht vorstellen. bin da nicht so gut drin.

    wenn man mit enter-frame herumschuftet (was ich nie mach) kann man ja mal die bilder-pro-sekunde geschwindigkeit ganz weit herunterschrauben und gucken was passiert. alles in zeitlupe machen.
  8. Autor dieses Themas

    gki2003

    Kostenloser Webspace von gki2003, auf Homepage erstellen warten

    gki2003 hat kostenlosen Webspace.

    und zwar wird, wenn _rotation vom object _root.glass.glass kleiner als 9 ist, immer 1° zur rotation hinzugefügt. wenn der rotationswert größer oder gleich 10 ist, wird 1° weggenommen. Damit schaff ich 1° Bewegung pro RollOver.
    Allerdings hab ich das Gefühl, dass ich das mit dem onEnterFrame noch nich ganz verstanden habe, da das bei mir in keinster weise so funktioniert, wie ich es in der Definition kennengelernt habe ...
    die meisten Beispiele, die ich mir angesehen habe, hatten da sowas stehen, aber diese Variante funktioniert bei mir nicht, bekomm da ständig ne fehlermeldung, dass der Syntax nicht stimmt ...

    my_mc.onEnterFrame = function() :Void {
    ...
    }
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!