Alors voilà :

[actionscript]
import com.bourre.log.PixlibStringifier;
import com.bourre.transitions.ITweenListener;
import com.bourre.transitions.TweenEventType;
import com.bourre.transitions.TweenMS;

/**
 * @author [ali_o_kan] - Laurent Deketelaere
 */
class org.triptyk.components.MotionPlayer 
{
	public static var onStartEVENT : TweenEventType = TweenEventType.onStartEVENT;
	public static var onStopEVENT : TweenEventType = TweenEventType.onStopEVENT;
	public static var onMotionFinishedEVENT : TweenEventType = TweenEventType.onMotionFinishedEVENT;
	public static var onMotionChangedEVENT : TweenEventType = TweenEventType.onMotionChangedEVENT;

	private var _mcMotion : MovieClip;
	private var _tPlayer : TweenMS;

	public function MotionPlayer( mcMotion : MovieClip, nSec : Number, fE : Function)
	{
		_mcMotion = mcMotion;
		_tPlayer = new TweenMS(this, _play, _mcMotion._totalframes, nSec * 1000, 1, fE);
	}

	private function _play( nKey : Number ) : Void
	{
		_mcMotion.gotoAndStop(Math.round(nKey));
	}

	public function start() : Void
	{
		_tPlayer.start();
	}

	public function stop() : Void
	{
		_tPlayer.stop();
	}

	public function revert() : Void
	{
		_tPlayer.yoyo();
	}

	public function setDuration( nSec : Number ) : Void
	{
		_tPlayer.setDuration(nSec * 1000);
	}

	public function setEasing( fE : Function ) : Void
	{
		_tPlayer.setEasing(fE);
	}

	public function getView() : MovieClip
	{
		return _mcMotion;
	}

	public function addListener(oL : ITweenListener) : Void
	{
		_tPlayer.addListener(oL);
	}

	public function removeListener(oL : ITweenListener) : Void
	{
		_tPlayer.removeListener(oL);
	}

	public function addEventListener(e : TweenEventType, oL) : Void
	{
		_tPlayer.addEventListener.apply(_tPlayer, arguments);
	}

	public function removeEventListener(e : TweenEventType, oL) : Void
	{
		_tPlayer.removeEventListener(e, oL);
	}

	public function toString() : String 
	{
		return PixlibStringifier.stringify(this);
	} 
}


Et son utilisation :

[actionscript]
var _animIntro : MotionPlayer = new MotionPlayer(resolveUI("mcIntro"), 1);
_animIntro.addEventListener(MotionPlayer.onMotionFinishedEVENT, this, _onFinishIntro);
_animIntro.start();


Un autre avantage non négligeable de cette solution est qu'en période de dev on est plus obliger de se taper toutes les transitions en temps réelle, vous avez celle qui vous ne pouvez plus voir en peinture après une nuit de charrette. :p

++
Laurent