button rewind

klaltm

Grünschnabel
Hallo Freunde,
ich bin Lehrer an einer Schule mit Nachmittagsbetreuung, wo wir uns in einer AG mit Computergrafik befassen. Wir haben nun einen ganz einfachen flash-button gemacht, wo sich bei mouseover praktisch nur ein Kreis öffnet (als tween). Nun kommen wir nicht weiter. Was müssen wir tun damit sich beim Wegbewegen der Maus der Kreis wieder schließt, also der tween rückwärts läuft.
Vielen Dank schonmal
klaltm
 
Nun, ActionScript MX macht's möglich, dass das ganze gescriptet mit 3 Zeilen vor sich geht:
PHP:
instanzname.onEnterFrame = function() {
    this.prevFrame();
}
Diesen EventHandler müsstest du aber erst zum passenden Zeitpunkt implementieren, sonst läuft dir der MovieClip ja schon von Anfang an dauernd zurück. :)

Falls dir/euch der Weg über ein weiteres Tweening lieber ist, bleibt nichts anderes übrig, als auf dem Schlüsselbild, bis zu dem beim ersten Klick getweent werden soll, ein stop() zu setzen und in den folgenden Frames den Rückwärtstween zu zeichnen, so dass bei erneutem Buttonklick einfach weiter in der Zeitleiste gefahren wird und damit der Tween weiterfährt.

Wie du nun feststellen kannst, ob der Button einmal oder zweimal geklickt wurde, lässt sich mit einer einfachen Zählvariable realisieren. :)

Bei Bedarf ist auch eine genauere Erklärung zu den beiden Varianten möglich...

hth,
Geist
 
Lieber Geist,
vielen Dank für deine Antwort, aber es tut mir leid, denn das habe ich überhaupt nicht verstanden. Vielleicht habe ich mich ja auch unklar ausgedrückt.
Ich versuchs nochmal:
Wir haben einen kreis erstellt und diesen so bearbeitet, dass er bei mouseover größer wird (F8 -> convert to symbol ->button rechte Maustaste -> edit in place / wieder F8 -> convert to symbol, diesmal movie / rechte Maustaste -> edit in place)
Wir möchten nun, dass beim Wegrollen (also alles ohne klicken) der Kreis wieder in seine anfängliche Größe zurückfährt. Ich dachte mir dass es hierfür nicht reicht einen zweiten movie zu erstellen, da man ja nicht weiß, wie lange der Betrachter mit der Maus auf dem Button bleibt.
Ich hoffe du verstehst, was ich meine.
Gruß Klaus
 
Du erstellst eine neue Ebene, die mit einem Schlüsselbild über alle folgenden Frames hinwegreicht, in diesem positionierst du folgendes script:
PHP:
rewind = function() {
i = Anzahl _der_Frames_bis_zum_grossen_Kreis;
for (i; i>1; i--){
    this.prevFrame();
}}

im frame da wo du den frame gross hast mache er ein stop(); und ein herzhaftes
PHP:
kreis_mc.onRollOut = function(){
rewind();
}

hgzh
B
 
Danke für die Antwort, aber wo erstelle ich die neue Ebene? In der anfänglichen Szene oder über dem Film?
Angenommen, der große Kreis sei das Bild 20, muss ich dann schreiben i = 20 ?
Tut mir leid, aber ich kenne mich leider noch nicht so gut aus.
Denoch vielen Dank für die Mühe!
Gruß Klaus
 
Was für ein Film welche Szene ?
Auch wenn du keine Ahnung hast, es hilft ungemein, wenn du präzise bleibst.
Ich gehe davon aus, das das Tweening im ersten Frame der ersten Szene deines Flash Filmes beginnt...sollte das nicht so sein, muss ich das wissen, weil ich dann das skript ändern muss.
Ja, wenn es 20 Bilder hat, bis dein Kreis gross ist, und das Frame mit dem stop befehl kommt, dann ist i=20 oder auch i=this._currentframe.
Ebenen sind die Dinger in der Zeitleiste, dein tweening ist das leicht rosa gefärbte, über diesem fügst du eine neue Ebene ein, du siehst dann ein kästchen mit einem kreis auf dem ersten Frame, und auf allen weiteren frames ein weisses rechteck, wenn du nun auf dem ding mit dem kreis das Funktions As imn Aktionen Fenster eingibst ist diese Funktion über alle Frames hinweg verfügbar.
Auf das letzte Frame in der ebene deines tweens (wichtige unterscheidung) FÜGST DU DEN Event(rollOut)trigger ein, somit kann die Funktion nur ausgelöst werden, wenn das letzte Bild erreicht ist.
Sollte diese langatmige und fingerbrecherische (weil auf einem dummen Laptop mit 12kmodem geschriebenen) Post nicht reicht, dann lade bitte das fla hier rauf, dann kriegstes frei haus.....

B
 
Hi,
tut mir leid, wenn ich nerve.
Ich glaube ich hab eden Fehler gemacht, das Ganze von vornherein als Button erstellt zu haben - aber egal: ich hab die fla mal angehängt.
Gruß Klaus
 

Anhänge

  • but.zip
    2,1 KB · Aufrufe: 26
So,
im Anhang ist die korrigierte Datei.
Das ganze ist ein bisschen unlogisch weil Buttons in der neuesten Version von Flash eigentlich abgeschafft sind, und dank des verbesserten Ereignis- und Objektmodells von MX ganz durch MC`s ersetzt worden sind.
Ich hab das in dein File implementiert, wenn du auf den sich bewegenden MC drückst, wird ein trace getriggert, das du durch deine Button Aktionen ersetzen kannst, ansonsten verhält sich das Ding wie von dir gewünscht.
Es gibt dabei zwei Sorten von Scripten: einmal die Funktionen in der Zeitleiste, zweitens die Funktionen auf dem Objekt, beachte dabei die Unterschiede in den Objektaktionen am Anfang und am Ende des Tweens, da dürftest du dann einiges verstehen.
Wenn du noch FRagen hast, frag einfach.

hgzh B

P.S.:
Sollte ich angenervt rübergekommen sein, dann wirf mal einen Blick auf das direkte Nachbarthread "Schleifendesaster", und du wirst verstehen, das nicht du es warst der mich genervt hat....
Trotzdem sind präzise Fragen unerlässlich für präzise Antworten, und en geupptes Fla kann von Anfang an viel Zeit sparen...
 

Anhänge

  • but-korrigiert.zip
    2,9 KB · Aufrufe: 35
Hallo ,
muss noch mal stören!
Vorab jedoch vielen Dank, dass ihr euch überhaupt die Mühe macht mir behilflich zu sein.
Wenn ich die Datei öffne, erscheint die Meldung "unerwartetes Dateiformat". Ich sollte vielleicht erwähnen, dass ich nicht die neueste Flash-Version habe, sondern mit FL5 arbeite.
Gruß Klaus
 
hmmmm, schreib sowas bitte immer in die Betreffszeile wenn du ein neues thread anlegst.
Wir helfen hier alle sehr gerne wenn wir können, weil wir dabei alle nochwas lernen und auch mal was zum lachen haben...;-)

Anbei das Flash5 File, wobei ich nicht unbedingt weiss ob man das abwärtskompatibel lesen kann, mit flash 4 auf gar keinen Fall.
Sollte es nicht funktionieren anebei der Code.

Auf dem Kreisobjekt im ersten Frame des Tweens (Object muss MC sein, kein Button und in der Hauptzeitleiste liegen.):
PHP:
onClipEvent (enterFrame){ 
if(_root.ball.hitTest(_root._xmouse, _root._ymouse, true)){ 
_root.play();}else {_root.rewind();}
}
Auf dem Kreisobjekt im letzten Frame des Tweens:
PHP:
onClipEvent (enterFrame){ 
if(_root.ball.hitTest(_root._xmouse, _root._ymouse, true)){ 
_root.stop();}else {_root.rewind();}
}
Auf einer über dem Tween angelegten Ebene (leer) mit einem Keyframe auf dem ersten Frame und einem Keyframe auf dem Frame über dem letzten Bild des Tweens.
Auf dem ersten Keyframe:
PHP:
rewind = function(){
	_root.prevFrame();
}
_root.ball.onPress = function(){
	trace("hier könnten deine Button Aktionen stehen");
}
AUf dem letzten Keyframe:
PHP:
rewind = function(){
	_root.prevFrame();
}
_root.ball.onPress = function(){
	trace("hier könnten deine Button Aktionen stehen");
}

der mc muss ball heissen (unter Eigenschaften das ganz linke Feld).

hgzh
B
 

Anhänge

  • but-korrigiert.zip
    4,9 KB · Aufrufe: 19

Neue Beiträge

Zurück