flex-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Justin Mclean (JIRA)" <j...@apache.org>
Subject [jira] [Resolved] (FLEX-14454) stop function of Tween object does not working properly
Date Mon, 24 Jun 2013 09:46:20 GMT

     [ https://issues.apache.org/jira/browse/FLEX-14454?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

Justin Mclean resolved FLEX-14454.

       Resolution: Fixed
    Fix Version/s: Apache Flex 4.10.0

Fixed issue in 4.10 develop branch. Re-raise any enhancements as new JIRA issues if still
> stop function of Tween object does not working properly
> -------------------------------------------------------
>                 Key: FLEX-14454
>                 URL: https://issues.apache.org/jira/browse/FLEX-14454
>             Project: Apache Flex
>          Issue Type: Bug
>          Components: Effects
>    Affects Versions: Adobe Flex SDK 3.0 (Release)
>         Environment: Affected OS(s): All OS Platforms
> Affected OS(s): All OS Platforms
> Browser: Internet Explorer 7.x
> Language Found: English
>            Reporter: Adobe JIRA
>             Fix For: Apache Flex 4.10.0
> Steps to reproduce:
> 1. Define any custom object (say CustomObject) with property (say tweener) of type Tween
which is created in constructor.
> public class CustomObject  {
> 	private var tweener: TweenEx;
> 	public function CustomObject() {
> 		tweener = new Tween (this, 0, 1, 1000, -1, tweenerUpdate, tweenerEnd);
> 	}
> 2. Create instance of CustomObject which creates Tween abject and animation is started.
> var customObject1 = new CustomObject();
> 3. While running the tweener from first custom object create another custom object.
> 4. When first custom object finished its animation but second one still running call
stop() method of Tween object of first custom class.
>  Actual Results:
> The Tween object from second custom object will be stoped.
>   Expected Results:
> Nothing should happen.
>  Workaround (if any): - 
> I have checked source code for Tween object and found the reason. Also I found one more
minor bug while checking source.
> The problem is when we creating new Tween it is automatically added to the activeTweens
static array. The ID of the tween is index in the array. 
> So when I created customObject1 which creates Tween object let say tween1 that object
has ID = 0 and pushed to the array.
> Then I created customObject2 which creates tween2 with ID=1 and also pushed to the activeTweens
> Next when tween1 is fineshed it automaticaly removed from the array and indexes of existing
tweens recalculated. So at that moment we have tween2 in the array with ID=0. But we still
have tween1 instantiated and tween1 also have ID=0. So now if I call stop for tween1 then
Tween class will stop tween2 object.
> The simplest solution is just to set ID to -1 or so to unbind the tween from the array
during removing it like that:
>     private static function removeTweenAt(index:int):void
>     {
>         if (index >= activeTweens.length || index < 0)
>             return;
>         Tween(activeTweens[index]).id = -1;
> About another bug:
> in the private static function timerHandler(event:TimerEvent):void you can see:
>         var n:int = activeTweens.length;
>         for (var i:int = n; i >= 0; i--)
> but should be 
>         var n:int = activeTweens.length;
>         for (var i:int = n-1; i >= 0; i--)
> Also I would recomend to extend it a bit like:
> add a new property to the constructor like startWhenCreated: Boolean = true. then it
is possible to create Tween object but do not start it automatically.
> add a new property to the constructor like startFunction: Function
> extend resume() function in such way that if Tween is fineshed and then resume() is called
the tween object again pushed to the array and tween makes reverse and continue working. then
it is simple to do infinite animations to both ways. Also direction attribute would be nice
to have as public property (read only is enaugh). 
> Also may be make sense to have attribute like autoreverse.

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

View raw message