Tween class animations - modifying elasticity

I am fairly new to Flash, and couldn't find the help I needed through a search.
I am using the Tween class to move objects when buttons are clicked. I am using elastic easing as the animation ends, and it looks ok. But am I able to modify the elasticity at all? I like the effect, but it is a little strong and I would like to reduce the bounce at the end.
Can I do this, or by using this method of animation am I losing the fine control that I would have by using the timeline and I just have to suck it up?

Well the easing you provide for the tween is just a reference to a function. So you can search the web and find your own functions. Robert Penner is famous for a large number of really great easing methods. Or you can just muck a bit with the built in functions. I put two small clips on the stage, clip0 and clip1. Then this code:
import fl.transitions.*;
import fl.transitions.easing.*;
var myTween0:Tween=new Tween(clip0,"x",Elastic.easeOut,100,500,2,true);
myTween0.start();
var myTween1:Tween=new Tween(clip1,"x",myEase,100,500,2,true);
myTween1.start();
function myEase(t:Number, b:Number, c:Number, d:Number):Number {
return Elastic.easeOut(t, b, c, d, .5, .9);
The the top one is the default and the lower one is my "modified" version. If you check out the help files for the Elastic classes easeOut method it requires the first four arguments (time, start value, end value of the prop, and duration) as do all tween functions. But the last two a and p are specific to elastic easing. The first is the amplitude of the sine wave and p is the period of the sine wave. I don't know what the units are on either of those, but I'm guessing pixels (or twips) and either seconds or milliseconds. So you could just fiddle with those numbers.
I'm not sure if there is anyway to send those numbers directly through the Tween constructor -- regardless of whether I used the built in functions or made my own.

Similar Messages

  • External swf and the tween class

    i have an external swf which i import into my main swf using
    the loadMovie command. my external swf has some tween class
    animations in it. if i run the main movie, the external swf movie
    runs fine of course...but the tween classes are not loaded. am i
    missing somthing?
    here is the code from the external swf file which is applied
    to a clickable movie clip of course.
    this.onRollOver = function() {
    rewind = false;
    play();
    var squaretween = new mx.transitions.Tween(previewthumb,
    "_xscale", mx.transitions.easing.Elastic.easeOut, 0, 1200, .5,
    true);
    var squaretween = new mx.transitions.Tween(previewthumb,
    "_yscale", mx.transitions.easing.Elastic.easeOut, 0, 1200, .5,
    true);
    squaretween.onMotionFinished = function() {
    loadMovie("hotairlarge.swf",
    "_root.homecontainer.printworkcontainer");
    any help would be great!

    try inserting the following to line 1,frame 1 your main swf:

  • Adobe air 2.6 iPhone animation tween class vs onEnterframe

    Hi,  Does anyone knows what's better to create alpha or slide animations on iPhone applications, using a tween class like Tweener or use the classic onEnterframe.  What's the better choice, who's the better performance .  Thanks,  Nuno

    Use Tween Class,
    http://www.greensock.com/tweenlite/

  • Tween Class fails

    Hi,
    i was looking for some help with tween class beacuse i have a strange problem. I'm working with AS3, when i test my project, sometimes the Tween fails, sometimes it works. It's really strange, i don't know why. The animation stops before the end point. The most strange for me is why sometimes it works and sometimes no?
    My code is geting a little complex, then i tried to do the same process in a simple model, and the result was the same, i run the model many times, in 5 or 3 % the animation finished before the correct end point. Does anybody with the same problem?
    Thanks in advanced!
    Henrique.

    Thanks clbeech!
    In fact, i was using one code line (var nameTween:Tween = new Tween(...)) and calling this line many times by a Timer event. But, how can i use diferent names for the tween var? May i use a counter like var nameTween[counter]:Tween = new Tween(...)?
    My code is a little big and confuse, i'll try to solve the problem without publish the code. If i don't find a solution, i'll organize it and them put it here.
    Thanks a lot!
    H.

  • Tween class - tweening from curent position

    Hi, I've been looking at the tween classes and I was
    wondering how I could use it to tween an object that i already
    placed on the stage? So using it's current position and tweening to
    a new position. Is there a way of doing it by simply using a term
    that flash understands (eg _xPosition)?
    Cheers
    Ray
    import mx.transitions.Tween;
    import mx.transitions.easing.*;
    new Tween(ball_mc, "_x", Elastic.easeOut, 300, 50, 3, true);
    new Tween(ball_mc, "_y", Elastic.easeOut, 100, 50, 3,
    true);

    I think I asked for help a little quick there.
    this._x
    it looks like that is what I was after.
    Ray

  • Tween class - yoyo()

    Hi
    I was wondering what the opposit function is of the yoyo()
    funtion.
    I now have a animation running from right to left using the
    tween class.
    Instead of running the animation at the end going
    backwardswith the yoyo() funtion (from left to right). I just want
    to start it all over again, so that it runs again from right to
    left
    gr
    Tom

    you're welcome.

  • Tween Class Easing AS modification help.

    hi guys im new here in the forums, ive been searching around about tween class easing in as2 and ive found this great tutorial http://www.republicofcode.com/tutori...enclasseasing/
    i need a help though, im not really a actionscript programmer, but i wanted to modify this code:
    Code:
    import mx.transitions.Tween;
    import mx.transitions.easing.*;
    var myHoriTween:Tween = new Tween (myBall_mc,"_x",Strong.easeOut,0,400,2,true);
    myHoriTween.onMotionFinished = function (){
    how would i modify the code so my objects not only goes on a straight line(_x like in the code from 0x to 400x),
    what if i wanted a diagonal direction, it will start in x and ends in y?
    hope you could show me how its done thanks in advance!!

    to tween along a diagonal, tween both the _x and _y properties at the same time:
    Code:
    import mx.transitions.Tween;
    import mx.transitions.easing.*;
    var myHoriTween:Tween = new Tween (myBall_mc,"_x",Strong.easeOut,0,400,2,true);
    var myVertiTween:Tween = new Tween (myBall_mc,"_y",Strong.easeOut,0,400,2,true);
    myHoriTween.onMotionFinished = function (){ }
    if you want to tween the _x and then tween the _y, use:
    import mx.transitions.Tween;
    import mx.transitions.easing.*;
    var myHoriTween:Tween = new Tween (myBall_mc,"_x",Strong.easeOut,0,400,2,true);
    var myVertiTween:Tween
    myHoriTween.onMotionFinished = function (){
    myVertiTween = new Tween (myBall_mc,"_y",Strong.easeOut,0,400,2,true);

  • AS 3 Tween Class help

    I could really use some help. I'm using AS 3 and am creating a simple vertical menu where 6 buttons reside. When any of the buttons is clicked it takes you to specific frame label. On each frame label I have some actionscript that once arrived at will animate a small triangle along the y axis to rest next to the button the user has just clicked. I am trying to use the Tween Class to aminate the small triangle. Here is what I have so far:
    import fl.transitions.Tween;
    import fl.transitions.easing.*;
    var arrowTween:Tween = new Tween(arrow_mc, "y", Regular.easeOut, 20, 80, 2, true);
    The var created assigns the triangle a new end position. Here's where I need help. In the example above the 20 is the starting position and what I need is something that says whatever the current (this) position value is move to the desired end position value, which is 80 in the example.
    I'm up late trying to figure this one out. Any help or ideas to lead me in the right direction is greatly appreciated.

    Craig,
    Thanks for the help. I really appreciate it. However, I'm still having a bit of trouble. When I put in "current arrow_mc" I get syntax errors in the compiler errors box.
    1084: Syntax error: expecting rightparen before arrow_mc. 
    Here is the code I have put in:
    stop();
    import fl.transitions.Tween;
    import fl.transitions.easing.*;
    var arrowTween:Tween = new Tween(arrow_mc, "y", Elastic.easeOut, current arrow_mc.y, 39.5, 1, true);
    Any ideas?
    Mike

  • New Flash8 Tweening Class?

    Hello Community,
    I have been using a pretty cool technique for controlling
    motion / alpha / scale of various instances on my stage with this
    technique where you read in the MX Tweening Class and then set up
    these variables that changes the motion / alpha / scale over time.
    And, if I place these variables into a function and call that
    function on an event (pushing a button, for example) the animation
    over time event happens. I cannot get this technique to work with
    (what appears new) the FP8 Tweening Matrix thingy.
    Below (first part) is some sample code of the old way, in MX,
    I did this:
    I cannot get something similar to this to work in Flash Pro 8
    (FP8) with these funky matrix thingies that this class is now built
    within.
    For example, I need to have these import (class) lines at the
    beginning, but then how do I create the same sort of animation in
    the function?
    import flash.geom.Transform;
    import flash.geom.Matrix;
    I guess, basically, what I am trying to ask here is: How do
    you create animation via the (what was formerly known as) the Tween
    Class in FP8?
    Any help/info would be appreciated.
    Thanks for your time,
    -john

    I agree with LuigiL ...you didnt set the variable fInt, so
    those wont work. I use the Tween class in Flash8 daily just
    fine.

  • Is there a bug in the as3 tween class

    Is there a bug in the as3 tween class that causes tweens to stop before completing. I read that there is and that a 3rd party tween class should be used. I'm just starting out learning as3 and experimenting but this would be good to know when I move onto more complex projects.
    Also the solution for this was to make your function global. Does this simply mean place your function in the top level of your movie.
    I have done research on this topic but I found many conflicting answers.
    Any assistance is welcome thanks in advance.

    the tween declaration (if you need one) must be placed within the scope of the function.  so, if the below function f() is defined in a movieclip, you can use any of the 3 (but don't use the last):
    ///////// most common use ////////////////////////////////////////
    var t:Tween;
    function f(){
    t=new Tween(...)
    /////// next most common use /////////////////////////////////////////
    //no declaration needed because the tween is not referenced anywhere outside the function so need not be assigned a variable
    function f(){
    new Tween(...)
    /////////// least common, not good coding, but possible ////////////
    // var t:Tween;  // declared on the root timeline, for example
    function f(){
    MovieClip(root).t=new Tween(...)
    p.s.  please mark correct/helpful answers

  • Making a complex button with the Tween class...not sure why this isn't working.

    Hi all,
    I'm trying to make a button which scales up on rollover and
    scales down on rollout and I wanted to use the Tween class to do it
    because I'm going to be making a bunch of these buttons and I want
    the code to be as efficient as possible.
    So right now I have a circle in a movie clip, and here's what
    I have on the first frame of that circle's actions layer:
    import mx.transitions.Tween;
    import mx.transitions.easing.*;
    function grow(who) {
    var tw:Tween = new Tween(who, "_xscale", Strong.easeOut,
    100, 400, 1, true);
    var tw2:Tween = new Tween(who, "_yscale", Strong.easeOut,
    100, 400, 1, true);
    function shrink(who) {
    var tw3:Tween = new Tween(who, "_xscale", Strong.easeOut,
    400, 100, 1, true);
    var tw4:Tween = new Tween(who, "_yscale", Strong.easeOut,
    400, 100, 1, true);
    this.onEnterFrame = function() {
    trace(rewind);
    if (rewind == true) {
    shrink(this);
    this.onRollOver = function() {
    rewind = false;
    grow(this);
    this.onRollOut = function() {
    rewind = true;
    The circle scales up just fine but when I rollout it doesn't
    scale back down. I did a trace to see if my tween was being called
    and sure enough it was. So I did another trace to see if the
    _xscale or _yscale was changing and they both were going down to
    around 290 on rollOut although there's no noticeable difference in
    the size of the button, it just looks like it's sitting there.
    I was also wondering if importing the whole class library
    will add very much to my file size?
    Also, since I'm going to have a lot of these buttons on the
    stage at the same time (these buttons will be like markers all over
    a map so there'll probably be around 50+) would it be a bad idea to
    have that many onEnterFrame checks running simultaneously? Is that
    going to slow the user's CPU way down?

    Thanks for the suggestions guys.
    I tried your code and got the rollOut to work but the button
    blinks rapidly if the user rolls out and then rolls back in
    quickly. Here is a link to the swf:
    http://www.stationarynotes.com/studioI/buttonTest.swf
    It also has to reach a complete stop the first time the
    button expands or else it won't run the shrink function on rollOut.
    I put all of my code on the first frame of the movie clip's
    actions layer so here's what mine looks like:
    import mx.transitions.Tween;
    import mx.transitions.easing.*;
    function grow(who) {
    var tw:Tween = new Tween(who, "_xscale", Strong.easeOut,
    100, 400, 1, true);
    var tw2:Tween = new Tween(who, "_yscale", Strong.easeOut,
    100, 400, 1, true);
    tw.onMotionFinished=function():Void{
    who.onRollOut = function() {
    shrink(who);
    function shrink(who) {
    var tw3:Tween = new Tween(who, "_xscale", Strong.easeOut,
    400, 100, 1, true);
    var tw4:Tween = new Tween(who, "_yscale", Strong.easeOut,
    400, 100, 1, true);
    this.onRollOver = function() {
    grow(this);

  • Is it flash bug? Tween Class

    I've been working on a bit big project. I've some components on the stage. There are basically 4 frames. Each frame has some components. What I've done is, I've used tween class. Workflow is something like this:
    Frame 1:
    --used Tween class to get fade effect for List component.
    --used Tween.MOTION_FINISH event to fire an event when it is finished.
    --when it is finished, applied eventListener
    --on Change event, remove eventListeners and use Tween class again to get reverse fade effect.
    --again used Tween.MOTION_FINISH event to fire an event when finished.
    --in that evenHandler, gotoAndStop(2);
    Frame 2:
    //similar
    Frame 3:
    //similar
    and so on.. now, what happens, is, if i play with my scene, sometimes tween class failed to work. sometimes it does not display List component, sometimes it displays List component with alpha 0.2. sometimes it happens with movieClip also. Is it flash bug or problem with my code?

    probably a coding problem.  the most common error that seems like a flash bug would be to define a tween within a function body allowing flash to gc that tween, possibly before it starts and/or completes.

  • Tween Class - calling Function

    What am I doing wrong?  I have been using the Tween Class in AS2 for years.  This is how I have been using it.
    //Beginning of my Flash file
    import mx.transitions.Tween;
    import mx.transitions.easing.*;
    function fadeon(mcname:String) {
        new Tween(mcname, "_alpha", Strong.easeOut, 0, 100, 1.5, true);
    //This is placed on Frames where I want to call this particular Tween
    fadeon(mymovieclipsname);
    Similiar setup for AS3 with no errors when I run it.  The only problem is it doens't work. 
    import fl.transitions.Tween;
    import fl.transitions.easing.*;
    function fadeon(mcname:String):void {
        new Tween(mcname, "alpha", Strong.easeOut, 0, 100, 1.5, true);
    //on Frames where I want to call this particular Tween
    mymovieclipsname.fadeon();
    if I run this portion the same as AS2 I get this lovely Compiler Error message.
    1067: Implicit coercion of a value of type flash.display:MovieClip to an unrelated type String.
    Any thoughts or help wold be greatly appreciated.

    Note that a better solution for AS3 is to simply create a Class that does the tween (to itself), then apply that to each bullet and leave the parent out of it. I'd probably have done the same thing in AS2 as well, but I learned As1>As3>As2, so my experience is not representative.
    Here's the Class that I use to do this (note I didn't use a Tween for this task as they have the danger to go out of memory before the tween is done unless you store a reference to them):
    package view.effects {
    import flash.display.Sprite;
    import flash.events.Event;
    //view.effects.SimpleFadeIn
    public class SimpleFadeIn extends Sprite {
      public function SimpleFadeIn() {
       super();
       addEventListener(Event.ADDED_TO_STAGE, startFade);
      protected function startFade(e:Event):void {
       alpha = 0;
       addEventListener(Event.ENTER_FRAME, doFade);
       addEventListener(Event.REMOVED_FROM_STAGE, cleanUp);
      protected function doFade(e:Event):void {
       if (alpha < 1) {
        alpha += .04;
       } else {
        cleanUp(e);
      protected function cleanUp(e:Event):void {
       removeEventListener(Event.ENTER_FRAME, doFade);
       removeEventListener(Event.REMOVED_FROM_STAGE, cleanUp);
    Note that the reason the path to the Class is there in a comment is so team members can copy and paste it into the Base Class for a MC they want to apply this behavior to.

  • Tween class trouble

    I don't use Tween class often, so don't scold me if this is
    an obvious question.
    When I set up a simple Tween, it works if I assign a specific
    object's instance name as the object to tween. But when doing it
    inside a for loop, it doesn't work. Yet everything else within the
    for loop works. I've tested every variable, and it's the object
    name that doesn't work. Here is a simplified version of the code.
    Someone please tell me what I've done wrong.

    Walter,
    > When I set up a simple Tween, it works if I assign a
    specific
    > object's instance name as the object to tween. But when
    > doing it inside a for loop, it doesn't work.
    Interesting. Honestly, your code looks fine. I just
    copy/pasted,
    literally, and it worked as expected.
    I did notice one parameter that might cause some confusion.
    In this
    line:
    var letterUp:Tween = new Tween(this, "_x", Bounce.easeOut,
    this._x,
    this.startX, 2000);
    ... that last parameter, 2000, means the tween will progress
    *very* slowly,
    as it will transpire over the duration of 2000 frames. In a
    standard 12dps
    movie, the full tween would take over 166 seconds. I'm
    wondering if you
    meant 2000 in terms of milliseconds? For that, you could drop
    it to 2, and
    add one more parameter, true, to indicate you want the tween
    to transpire in
    terms of seconds (true), rather than frames.
    David Stiller
    Adobe Community Expert
    Dev blog,
    http://www.quip.net/blog/
    "Luck is the residue of good design."

  • Tween class problem

    Hi - I'm using this script to animate some movieclips:
    import mx.transitions.Tween;
    import mx.transitions.easing.*;
    kText.onRollOver = function() {
    var btnScale:Tween = new Tween(kText.people, "_width",
    Elastic.easeOut, 30, 300, 30, false);
    var btnScale:Tween = new Tween(kText.people, "_height",
    Elastic.easeOut, 30, 200, 30, false);
    Which is fine, but when I target an mc within an mc such as:
    kText.inner_mc.onRollOver = function() {
    var btnScale:Tween = new Tween(kText.inner_mc, "_width",
    Elastic.easeOut, 30, 300, 30, false);
    var btnScale:Tween = new Tween(kText.inner_mc, "_height",
    Elastic.easeOut, 30, 200, 30, false);
    is doesn't seem to work - anyone know where I'm going wrong
    cheers

    Hi - thanks for your help. this is the script I'm using:
    kText.onPress = function() {
    var xScale:Tween = new Tween(this, "_width", Back.easeOut,
    current_width, 2497, 30, false);
    var xScale:Tween = new Tween(this, "_height", Back.easeOut,
    current_height, 559, 30, false);
    var xPos:Tween = new Tween(this, "_x", Back.easeOut,
    current_x, 1300, 40, false);
    var yPos:Tween = new Tween(this, "_y", Back.easeOut,
    current_y, -100, 40, false);
    var btn_alpha:Tween = new Tween(this.people, "_alpha",
    Strong.easeOut, 100, 0, 40, false);
    xScale.onMotionFinished = function() {
    _root.attachMovie("123", "att123", 1);
    att123._x = 300;
    att123._y = 300;
    kText.people.onRollOver = function() {
    var btnScale:Tween = new Tween(this, "_width",
    Elastic.easeOut, 30, 300, 30, false);
    but the second function won't work as long as the first
    function is there - if I take out the first function the second one
    works fine.
    cheers.

Maybe you are looking for