Jump to content


  • Posts

  • Joined

  • Last visited

Posts posted by eco_bach

  1. I have a TimeLineMax sequence defined thus

    var tl=new TimelineMax({paused: true});

    tl.append(TweenMax.to(f, _flipSpeed, {rotationY: 90 + _offset, visible: false, onComplete:doneRotateF,ease:Linear.easeNone}))

    tl.append(TweenMax.to(b, 0, {alpha: 1, immediateRender: false}))

    tl.append(TweenMax.to(b, _flipSpeed, {rotationY: 0, onComplete:doneRotateB, ease:Linear.easeNone}));

    When I call it using


    the callbacks work, are called, but when I try to reverse it


    the tweens work fine but the callbacks are NOT called. What gives?

  2. Why can't I tween a simple div?
    In my javascript the following works so I KNOW I have a proper refrence to my div
    but this doesn't(no errors, just fails!!)
    TweenLite.to(  infoDiv,1,{alpha:0});

    The div has absolute positioning applied but obviously this is not the value I am changing.

    I am also using TweenLite elsewhere in the same javascript file so I know I am referencing it properly.


  3. I suspect there is actually something else going on here that only Adobe engineers can answer. After a lot of testing what I've discovered is that the full screen executable ALWAYS performs better with buttery smooth tweens when the Flash IDE is open. If I close the IDE, relaunch the executable, there is noticeable stutter.

  4. Any Actionscript work I do is either AIR for mobile or AIR for Desktop (standalone installations, kiosks) etc. 


    For ease of setup I usually must target full frame for any desktop applications.


    Performance optimization is critical regardless.


    When publishing AIR to the desktop, you have the option of 3 different rendering modes, DIRECT, CPU, and AUTO. From experimentation on a typical PC I've discovered that using AUTO give the best performance.(DIRECT mode seems better on my iMac, I assume this has to do with different GPU-CPU configurations)


    A recent application uses Blitmask on a dozen horizontally scrolling Textfields. 

    With a 120 fps targeted frame rate and HD (1920x1080) stage size I  easily average over 100fps.



    But, the moment I set the application as being fullscreen, which represents a roughly 10% increase in overall pixel area, the application frame rate dropped to less than 24fps!! Apparent speed of actual tweening seems even slower, less than 12fps.


    I am perplexed as to why this is so.

    I also tried the fullscreen rect trick which works well for full screen video but this had no effect.


    Can anyone suggest how I might improve fullscreen animations using TweenMax-Lite?

    if (stage.displayState == StageDisplayState.NORMAL) {
    stage.fullScreenSourceRect=new Rectangle(0, 0, 1920, 1080);
    } else {
  5. TweenMax.staggerTo(_rows, .1, {glowFilter:{color:0xFFFFFF, blurX:16, blurY:16, strength:2.9, immediateRender:true, alpha:1},stagger:.1,onComplete:removeGlow}); 

    Trying to use the new TweenMax staggerTo with latest v12 but keep getting the following error

    In the above code sample _rows is an array of textFields.



    ReferenceError: Error #1069: Property stagger not found on flash.text.TextField and there is no default value.

    at com.greensock.core::PropTween()[/Active/_Flash/_AS3_v12/src/com/greensock/core/PropTween.as:58]

    at com.greensock::TweenLite/_initProps()[/Active/_Flash/_AS3_v12/src/com/greensock/TweenLite.as:604]

    at com.greensock::TweenLite/_init()[/Active/_Flash/_AS3_v12/src/com/greensock/TweenLite.as:555]

    at com.greensock::TweenMax/render()[/Active/_Flash/_AS3_v12/src/com/greensock/TweenMax.as:970]

    at com.greensock.core::SimpleTimeline/render()[/Active/_Flash/_AS3_v12/src/com/greensock/core/SimpleTimeline.as:166]

    at com.greensock.core::Animation$/_updateRoot()[/Active/_Flash/_AS3_v12/src/com/greensock/core/Animation.as:570]

  6. Trying something that pushes the limits of what I think is possible using just the default plugins


    I am animating a dynamic textfield with a BlitMask and also updating the text at the same time

    So far so good.


    What I would like to do is incorporate the splitTextField effect similar to the ending in this video



    but without pausing the animated text at all.

    Does anyone know of a way to do this?

  7. This is a simple BlitMask example WITHOUT updating a dynamic TextField that works as it is supposed to.

    How do I update the text AND keep the BlitMask functionality?


    We are using a BlitMask to optimize performance and provide the autowrap functionality
    import flash.events.*;
    import flash.utils.Timer;
    import com.greensock.*;
    import com.greensock.easing.*
    import flash.text.TextField;
    var _blitMask:BlitMask;
    var tf:TextField;
    _blitMask=new BlitMask(tf, tf.x, tf.y, 1920, 50, true, true, 0x000000, true);
    TweenMax.to(tf, 20, {x: 1920, repeat: -1, onUpdate: _blitMask.update, ease: Linear.easeNone});


  8. Panic deadline and I am trying to get something to work using BlitMask in conjunction with a dynamic Textfield that I am appending text to. In order to add (append) text I need to disableBitmapMode and dispose of the old Blitmask, add my text, then create a new Blitmask
    The issue is that the Blitmask is NOT auto wrapping properly.
    The following will work if you drop in an fla. I've also attached an fla with identical code.
    We are simply updating a dynamic textfield that is also endlesslly looping left to right
    We are also using a BlitMask to optimize performance and provide the autowrap functionality
    import flash.events.*;
    import flash.utils.Timer;
    import com.greensock.*;
    import com.greensock.easing.*
    import flash.text.TextField;
    var _debugTxt:String='Jack and Jill went up the hill to fetch a pail of water. Jack fell down and broke his crown and Jill came tumbling after This is at the end!!';
    var _debugPool:Array=_debugTxt.split(" ");
    var _blitMask:BlitMask
    var tf:TextField;
    var pollTimer=new Timer(2000, 0);
    pollTimer.addEventListener(TimerEvent.TIMER, timerHandler, false, 0, true);
    var count:int=0;
    function timerHandler(event:TimerEvent):void {
    if (_blitMask != null) {
    var tagTxt:String=_debugPool[count];
    count=int(count + 1);
    trace('tagTxt ='+tagTxt);
    trace('getMetrics(tf).width ='+getMetrics(tf).width);
    if (getMetrics(tf).width < 1920) {
    if (_blitMask == null) {
    _blitMask=new BlitMask(tf, tf.x, tf.y, 1920, 50, true, true, 0x000000, true);
    //NB only tween once for repeating tween
    if (TweenMax.isTweening(tf) == false) {
    //this['_blitMask'+j] = new BlitMask(tf, tf.x, tf.y, 1920, _bannerH, true, true, 0x000000, true);
    TweenMax.to(tf, 20, {x: 1920, repeat: -1, onUpdate: _blitMask.update, ease: Linear.easeNone}); //onUpdate:this['_blitMask'+j].update,
    function getMetrics(tf:TextField):TextLineMetrics {
    var tm:TextLineMetrics=tf.getLineMetrics(0);
    //trace('getMetrics and metrics.  ='+tm.width);
    return tm;
    //start everything!


  9. Let's say in a class I define a private var '_tween' and instantiate a new TweenLite or Tweenmax instance in a method like so.

    _tween = new TweenLite(

    What happens if I call this 1000's of times? Do I need to concern myself with memory leaks? Or does TweenLite automatically take care of garbage collection. If I need to call a tween 1000's of times am I always better to use the static variation instead?

  10. The following code ALMOST works. The problem is that there isn't a smooth transition from one tween to the next. Cany anyone help?

    import com.greensock.TweenLite; 
    import com.greensock.easing.*;
    import com.greensock.plugins.TweenPlugin; 
    import com.greensock.plugins.*;
    var dp3D:Array=[{x:0, y:0,z:1080},{x:1920, y:1080,z:0},{x:0, y:0,z:0},{x:1920, y:0,z:1080},{x:0, y:1080,z:0},{x:1920, y:1080,z:1080}]
    function doBezier():void{
    TweenLite.to(mc, 3, {bezierThrough:[{x:960, y:540,z:540}, dp3D[_bezierIndex]],onUpdate:tracePosition, ease:Linear.easeNone,onUpdateParams:[mc],onComplete:loopBezier}); 
    function loopBezier(){
    //if condition
    function tracePosition(obj:DisplayObject):void {
    trace("x: " + obj.x + " y:" + obj.y+ " z:" + obj.z);
  11. A fairly common and VERY time consuming debugging chore on complex flash apps using Tweenlite is often spent doing hours of detective work, trying to locate which objects are returning null

    ie this error


    TypeError: Error #1009: Cannot access a property or method of a null object reference.

    at com.greensock.plugins::VolumePlugin/onInitTween()

    at com.greensock::TweenLite/init()

    at com.greensock::TweenLite/renderTime()

    at com.greensock.core::SimpleTimeline/renderTime()

    at com.greensock::TweenLite$/updateAll()


    Is anyone aware of any debugging hooks within TweenliteTweenMax that might help in determining the actual instance name of null objects?

  12. Thanks, slowly making sense. What has me a bit befuddled is the actual implementation of the getter setters. When are we setting scrollX and when are we getting scrollX?


    The only reference I see is in the TweenMax instance scrollX:change. So we're tweening the scrollX property (the setter) but we need to pass an argument of type Number.


    Once I get past this hurdle I think it will all make sense..

  13. Thanks Jack!


    Almost there. I now tween PERFECTLY when scrolling right and NO error creeps in. yeah!


    But scrolling left still needs work. The main issue is that the scrolling when using a negative relative seems to introduce a little bit of 'stutter' to the tween. The tween is not as buttery smooth as when tweening to the right.

    And as a result of this stutter I assume, some error again creeps in when scrolling left. Any idea why a relative tween using a negative value would not be as smooth?

    In the code below when scrolling left _dist ="-100" and when right "100";


    My pseudo code>


    private function onUpdateHandler():void {
    		if (MOVERIGHT) {
    			if (x >= 980) {
    				//x = -980//OLD BAD
    				x -= 980 * 2;///NEW GOOD
    		if (MOVELEFT) {
    			if (x <= -490) {
    				x += 980 * 2;//NEW GOOD??
    	private function doScroll():void {
    		var t:TweenMax = TweenMax.to(this, 0.25, {x:_dist, ease:Linear.easeNone,onUpdate:onUpdateHandler, onComplete:resetTween});
    		var tl:TimelineMax = new TimelineMax({repeat:-1}); //repeats indefinitely
    		function resetTween():void {

  14. Thanks jack

    tried TweenMax, same issue


    I've uploaded an fla with stripped down class files. The relevant code is in the class ItemBase.

    In particular the doScroll() method.


    The only thing I've done is add an onUpdate handler to get a continuous scroll.


    In the fla there are 4 MovieClip Items


    Clicking on the left arrow repeatedly and you can see that the green rectangles representing the outlines of the MovieClips no longer stay aligned.


    There is a bug currently and the right arrow doesn't work but you should get the idea once you've compiled and viewed in Flash.


    Note I've commented out my previous code using TweenLite and absolute, constant speed tweens.


    Any help appreciated!