[Tweener] Getting tween target values

Bradley bradley at seven2.net
Mon Jul 28 10:57:52 PDT 2008


That's awesome! I'm still mulling over whether the way I'm going  
about my project is right, but this is helpful in any case. Thanks!

On Jul 28, 2008, at 10:42 AM, Zeh Fernando wrote:

> Hey Bradley,
>
>> I've run into this issue before. Within this project there are  
>> several places that would benefit from the added feature. In  
>> general I think it would make applications simpler if it weren't  
>> required to store such tween parameters in a variable every time  
>> we might need to retrieve them.
>
> I admit this request is not something so out of this world.  
> However, with its current architecture, Tweener doesn't allow you  
> to access the tweenings already in place; you can have getTweens,  
> but it's just to know if some property of some object is already  
> tweening.
>
> Giving your needs, and the ones that other people may have too, the  
> best solution would be to have a way to access the tweening  
> information *instance*, and then you could to changes to it. This  
> is something I've kept on my mind for a while and something I was  
> tackling with a moderately recent version of Tweener I was working  
> on, but again, this is not something the current architecture has.
>
> This is all just to say that yes, your request makes sense.
>
> In the current version, for your specific case, the best solution  
> would be adding a new function to Tweener to get the tweening  
> information for a given object/property. Something like this (AS3):
>
> public static function getTweenInfo (__obj:Object):TweenListObj {
> 	if (!Boolean(_tweenList)) return null;
> 	for (i:uint = 0; i<_tweenList.length; i++) {
> 		if (Boolean(_tweenList[i]) && _tweenList[i].scope == __obj) {
> 			return _tweenList[i];
> 		}
> 	}
> 	return null;
> }
>
> This returns a TweenListObj listing the tweening information of an  
> object (see the class for more information). Specific properties  
> (including their target values) are on a separate array. If you  
> need that:
>
> public static function getTweenPropertyInfo (__obj:Object,  
> __prop:String):PropertyInfoObj {
> 	if (!Boolean(_tweenList)) return null;
> 	for (i:uint = 0; i<_tweenList.length; i++) {
> 		if (Boolean(_tweenList[i]) && _tweenList[i].scope == __obj &&  
> _tweenList[i].properties[__prop] != null) {
> 			return _tweenList[i].properties[__prop];
> 		}
> 	}
> 	return null;
> }
>
> Usage:
>
> import caurina.transitions.PropertyInfoObj;
> import caurina.transitions.Tweener;
>
> Tweener.addTween(myobj, {x:10, time:1});
>
> trace ("target value of x is "+getTweenPropertyInfo(myObj,  
> "x").valueComplete);
>
> Those classes - TweenListObj, and PropertyInfoObj - are pretty  
> internal and it's likely they'll change a good bit in the future.  
> However, if you build simple methods and functions on the Tweener  
> class that handle them, there's a good amount of stuff you can add  
> to it. You may even just add a simpler getTweenTargetValue() method  
> directly if that works better.
>
> public static function getTweenTargetValue (__obj:Object,  
> __prop:String):Number {
> 	if (!Boolean(_tweenList)) return null;
> 	for (i:uint = 0; i<_tweenList.length; i++) {
> 		if (Boolean(_tweenList[i]) && _tweenList[i].scope == __obj &&  
> _tweenList[i].properties[__prop] != null) {
> 			return _tweenList[i].properties[__prop].valueComplete;
> 		}
> 	}
> 	return NaN;
> }
>
> So, something like this. I just wrote this without testing, but it  
> should work unless I forgot something pretty obvious.
>
> Zeh
> _______________________________________________
> Tweener mailing list
> Tweener at lists.caurinauebi.com
> http://lists.caurinauebi.com/listinfo.cgi/tweener-caurinauebi.com



More information about the Tweener mailing list