Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 03-04-2012, 12:52   #1 (permalink)
Neuer User
 
Benutzerbild von maxbahr01
 
Registriert seit: Mar 2005
Beiträge: 59
Objekttweening mit AS

Moin,

bin grad dabei mir mit einigen Tut´s und hier geposteten Beispielen ne kleine Animation zusammenzubasteln und komme grad etwas ins stocken...

Erzeuge per AS aus meiner Bilbliothek einen MC auf der Bühne, klappt auch soweit, bewegt sich auch wie ich es vorab. ABER...

1. Soll sich der MC hin und wieder zurück zur Ausgangsposition bewegen, nach erneutem klicken. Bisher läuft er nur zur neuen X,Y Koordinate.

Hab im video2brain Tut gesehen, dass er sowas ähnliches mit switch, case angestellt hat. Allerdings hat er dort die Positionen immer um nen festen Wert geändert und nicht zwischen zwei festen Positionen unterschieden, bzw. gewechselt.

2. Soll er eigentlich sich nur bewegen wenn man auf den MC direkt klickt und nicht irgendwo auf der stage. Wo definiere ich das?

vielleicht könnt ihr mir ja auf die Sprünge helfen. Hoffe ich hab mich nicht allzu umständlich ausgedrückt.

hier mein bisheriges Script:

PHP-Code:
import fl.transitions.Tween;
import fl.transitions.easing.*;  

var 
profilcontainer:Profilcontainer = new Profilcontainer ();
this.addChild(profilcontainer);
profilcontainer.150;
profilcontainer.180;
profilcontainer.scaleX 0.5;
profilcontainer.scaleY 0.5;

stage.addEventListenerMouseEvent.CLICKkoordTween );

function 
koordTweene:MouseEvent ) :void {
    
    var 
xPosTween:Tween = new Tweenprofilcontainer"x"Strong.easeOutprofilcontainer.x2002true ); 
    var 
yPosTween:Tween = new Tweenprofilcontainer"y"Strong.easeOutprofilcontainer.y2502true ); 
    var 
xScaleTween:Tween = new Tweenprofilcontainer"scaleX"Strong.easeOutprofilcontainer.scaleX12true);
    var 
yScaleTween:Tween = new Tweenprofilcontainer"scaleY"Strong.easeOutprofilcontainer.scaleY12true);


Geändert von maxbahr01 (03-04-2012 um 13:06 Uhr)
maxbahr01 ist offline   Mit Zitat antworten
Alt 03-04-2012, 13:18   #2 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 2.740
ich würde dir erstmal raten, dir eine andere Tweening-Engine zu suchen. Die Flash - eigene ist, sagen wir mal umständlich, und hat paar bugs.
Beiträge dazu wirst du hier im Forum massenhaft finden.
PHP-Code:
//dieses TweeningMonster
var xPosTween:Tween = new Tweenprofilcontainer"x"Strong.easeOutprofilcontainer.x2002true ); 
var 
yPosTween:Tween = new Tweenprofilcontainer"y"Strong.easeOutprofilcontainer.y2502true ); 
var 
xScaleTween:Tween = new Tweenprofilcontainer"scaleX"Strong.easeOutprofilcontainer.scaleX12true);
var 
yScaleTween:Tween = new Tweenprofilcontainer"scaleY"Strong.easeOutprofilcontainer.scaleY12true);

//könnte in Tweenlite bspw so aussehen:
TweenLite.to(profilcontainer2, { x:200y:250scaleX:1scaleY:1ease:Strong.easeOut }); 
Zitat:
2. Soll er eigentlich sich nur bewegen wenn man auf den MC direkt klickt und nicht irgendwo auf der stage. Wo definiere ich das?
dann solltest du den Event-Listener zu dem profilcontainer hinzufügen, und nicht zur stage.

Zitat:
1. Soll sich der MC hin und wieder zurück zur Ausgangsposition bewegen, nach erneutem klicken. Bisher läuft er nur zur neuen X,Y Koordinate.

Hab im video2brain Tut gesehen, dass er sowas ähnliches mit switch, case angestellt hat. Allerdings hat er dort die Positionen immer um nen festen Wert geändert und nicht zwischen zwei festen Positionen unterschieden, bzw. gewechselt.
dann musst du in einer Variablen speichern, wo sich der container gerade befindet (position A oder B), bzw in welche Richtung er sich zuletzt bewegt hat (vor/zurück).
und in der Funktion mit einer Bedingung (if else)darauf reagieren.
switch case brauchst du erst, wenn du mehr als zwei Positionen hast und unterscheiden musst.
__________________
greetz Thomas

plz RTFM & Coding Conventions
thomas_E ist offline   Mit Zitat antworten
Alt 03-04-2012, 14:37   #3 (permalink)
Neuer User
 
Benutzerbild von maxbahr01
 
Registriert seit: Mar 2005
Beiträge: 59
jo, Danke dir Thomas, hat alles soweit geklappt. Das TweenLite sieht in der Tat n bissl übersichtlicher aus ;-)

So sieht der Code bei mir nun aus.

PHP-Code:
import com.greensock.TweenLite;
import com.greensock.easing.*;  

var 
profilcontainer:Profilcontainer = new Profilcontainer ();
var 
startX 150;
var 
startY 180;
var 
zielX 350;
var 
zielY 250;

this.addChild(profilcontainer);
profilcontainer.startX;
profilcontainer.startY;
profilcontainer.scaleX 0.5;
profilcontainer.scaleY 0.5;

profilcontainer.addEventListenerMouseEvent.CLICKkoordTween );

function 
koordTweene:MouseEvent ) :void {
    if (
profilcontainer.!= zielX) {
        
TweenLite.to(profilcontainer2, { x:zielXy:zielYscaleX:1scaleY:1ease:Strong.easeOut });
    }else if (
profilcontainer.>= zielX) {
        
TweenLite.to(profilcontainer2, { x:startXy:startYscaleX:0.5scaleY:0.5ease:Strong.easeOut });
    }

Der MC fährt hin und zurück, TipTop.

Allerdings, hakt er mit dem zurückfahren, wenn ich während des hinfahrens auf ihn klicke, bzw. muss ich dann ein zwei Sekunden warten, bis das Script auf das zurückbewegen reagiert. IDEE warum?
maxbahr01 ist offline   Mit Zitat antworten
Alt 03-04-2012, 15:30   #4 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 2.740
Zitat:
Allerdings, hakt er mit dem zurückfahren, wenn ich während des hinfahrens auf ihn klicke, bzw. muss ich dann ein zwei Sekunden warten, bis das Script auf das zurückbewegen reagiert. IDEE warum?
Textaufgabe
der Container bewegt sich von x:150->350. bei 287 clickst du darauf, und es wird ordnungsgemäß die Funktion koordTween aufgerufen.

nun sollen die Bedingungen Entscheiden:
a) ist 287 != 350? wenn ja, tweene nach x:350;
ansonsten b)
ist 287 >= 350? dann tweene nach x:150;
welche Bedingung trifft zu? a, b, oder keine?

kleiner Tipp: du musst deine Bedingung nochmal überdenken.
pps: überleg nochmal, brauchst du die zweite Bedingung wirklich?
__________________
greetz Thomas

plz RTFM & Coding Conventions

Geändert von thomas_E (03-04-2012 um 15:42 Uhr)
thomas_E 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 11:07 Uhr.

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


Copyright ©1999 – 2014 Marc Thiele