Antworten auf deine Fragen:
Neues Thema erstellen

AS3 - Ein Tween für mehrere Objekte

Angus_MacGyver

Noch nicht viel geschrieben

Hallo!

Ich würde gerne zwei Movieclips auf meiner Bühne ("game_btn" und "close_btn") mit einem Tween deformieren. Derzeit habe ich für jeden Movieclip einen eigenen Tween. Das Script sieht so aus:

Code:
//Game-Button

var game_btn_width:Tween = new Tween(game_btn, "width", Regular.easeInOut, game_btn.width, game_btn.width - 8, 4, true);

game_btn_width.addEventListener(TweenEvent.MOTION_FINISH, game_btn_width_onFinish);
function game_btn_width_onFinish(e:TweenEvent):void {
    game_btn_width.yoyo();
}

var game_btn_height:Tween = new Tween(game_btn, "height", Regular.easeInOut, game_btn.height, game_btn.height - 8, 4, true);

game_btn_height.addEventListener(TweenEvent.MOTION_FINISH, game_btn_height_onFinish);
function game_btn_height_onFinish(e:TweenEvent):void {
    game_btn_height.yoyo();
}

//Close-Button

var close_btn_width:Tween = new Tween(close_btn, "width", Regular.easeInOut, close_btn.width - 8, close_btn.width, 4, true);

close_btn_width.addEventListener(TweenEvent.MOTION_FINISH, close_btn_width_onFinish);
function close_btn_width_onFinish(e:TweenEvent):void {
    close_btn_width.yoyo();
}

var close_btn_height:Tween = new Tween(close_btn, "height", Regular.easeInOut, close_btn.height - 8, close_btn.height, 4, true);

close_btn_height.addEventListener(TweenEvent.MOTION_FINISH, close_btn_height_onFinish);
function close_btn_height_onFinish(e:TweenEvent):void {
    close_btn_height.yoyo();
}
Das funktioniert zwar, aber ich habe mich gefragt, ob man das nicht vereinfachen kann. Ist es möglich, z.B. den "width"-Wert für beide Movieclips mit nur einem Tween anzusprechen?

Eine Alternative wäre sonst auch, zwei Parameter in einem Tween zu verändern, wenn so etwas geht. Also nicht für "height" und "width" je einen Tween verwenden, sondern beide Werte mit nur einem einzigen Tween ansprechen.

Ich blicke in ActionScript leider zu weng durch um das selbst hinzubekommen. Wäre für Hilfe sehr dankbar!
 

Angus_MacGyver

Noch nicht viel geschrieben

AW: AS3 - Ein Tween für mehrere Objekte

Ich habe zum Testen ein neues Projekt erstellt und es darin mit einem Array versucht. Ich habe zei Movieclips auf der Bühne ("mc1" und "mc2"):

Code:
import fl.transitions.Tween;
import fl.transitions.TweenEvent;
import fl.transitions.easing.*;


var clip_array:Array = [mc1,mc2];
for (var i:int = 0; i < clip_array.length; i++)
{
    var my_tween = new Tween(clip_array[i], "width", Regular.easeInOut, clip_array[i].width, clip_array[i].width - 8, 4, true);
}

my_tween.addEventListener(TweenEvent.MOTION_FINISH, my_tween_onFinish);
function my_tween_onFinish(e:TweenEvent):void {
    my_tween.yoyo();
}
Der Tween wirkt zwar auf beide Movieclips, aber der Loop nur noch auf "mc2". Sprich: Erst werden beide deformiert, dann nur noch der zweite Movieclip im Array.

Wie kann ich das Problem lösen?
 
A

ad86

Guest

AW: AS3 - Ein Tween für mehrere Objekte

Hi,

1. würde ich bei Tweens nicht oft mit Loops arbeiten. Ich hab gemerkt, dass Tweens dann nicht mehr bis zum Ende fortgeführt werden. Speicher ich Sie in einer variablen ab, passiert es weit weniger dass die Tweens hängen bleiben.

2.
IDer Tween wirkt zwar auf beide Movieclips, aber der Loop nur noch auf "mc2". Sprich: Erst werden beide deformiert, dann nur noch der zweite Movieclip im Array.

Ist doch auch kein Wunder. Kleines Beispiel. Du rufst alle zwei Minuten jemanden an. Am Ende hast Du den letzten Teilnehmer, und dem sagst Du, Du wirst Ihn noch mal anrufen. Den anderen sagst Du es nicht, da Dein TweenEventListener außerhalb der Schleife steht. Es müsste also so lauten:
Code:
import fl.transitions.Tween;
import fl.transitions.TweenEvent;
import fl.transitions.easing.*;

var tweenArray:Array=new Array();

var clip_array:Array = [mc1,mc2];
for (var i:int = 0; i < clip_array.length; i++){
    var my_tween = new Tween(clip_array[i], "width", Regular.easeInOut, clip_array[i].width, clip_array[i].width - 8, 4, true);
    tweenArray.push(my_tween);
    my_tween.addEventListener(TweenEvent.MOTION_FINISH, my_tween_onFinish);
}


function my_tween_onFinish(e:TweenEvent):void {
    //Sollte funktionieren, das hab ic aber nicht getestet
    e.target.yoyo();
}

MFg ad86
 

keul3

3dsMax | 3D-Contest

AW: AS3 - Ein Tween für mehrere Objekte

...

Eine Alternative wäre sonst auch, zwei Parameter in einem Tween zu verändern, wenn so etwas geht. Also nicht für "height" und "width" je einen Tween verwenden, sondern beide Werte mit nur einem einzigen Tween ansprechen.

...

Nicht nur aus diesem Grund würde ich dir für Tweens eine andere TweenEngine empfehlen. Denn die flasheigene TweenKlasse ist echt für den Allerwertesten. Mit TweenLite/TweenMax habe ich bisher sehr gute Erfahrungen gemacht. Sehr einfach zu handeln und vor allem nicht so fehleranfällig, da gcsafe.
 

Angus_MacGyver

Noch nicht viel geschrieben

AW: AS3 - Ein Tween für mehrere Objekte

Danke für die Antworten! :)

Externe Tweenin-Klassen muss ich mir wohl wirklich mal anschauen.

@ad86:

Mir war schon klar, WARUM nur noch der zweite Movieclip getweent wurde - ich wusste nur nicht, WIE ich das beheben konnte.

Aber dein Vorschlag hat super funktioniert - danke vielmals!
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.620
Beiträge
1.538.374
Mitglieder
67.544
Neuestes Mitglied
janusbarman
Oben