alatar спасибо за помощь, решил сделать так :

Код AS3:
<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark">
<fx:Script>
<![CDATA[
import mx.core.mx_internal;
import mx.events.FlexEvent;
private var timer:Timer;
private var moveLeft:Boolean = true;
private const PADDING:uint = 12;
private const SPEED:uint = 4;
private function normalState(event:FlexEvent):void
{
if(this.timer != null)
{
this.timer.removeEventListener(TimerEvent.TIMER , moveText);
this.timer.stop();
this.timer = null;
this.labelDisplay.setStyle("paddingLeft" , PADDING);
}
}
private function selectedState(event:FlexEvent):void
{
var textWidth:Number = this.labelDisplay.measuredWidth - this.labelDisplay.getStyle("paddingLeft");
if(textWidth > this.labelDisplay.width + PADDING);
this.timer = new Timer(50);
this.timer.addEventListener(TimerEvent.TIMER , moveText);
this.timer.start();
}
private function moveText(e:TimerEvent):void
{
var textWidth:Number = this.labelDisplay.measuredWidth - this.labelDisplay.getStyle("paddingLeft");
if(this.moveLeft)
{
this.labelDisplay.setStyle("paddingLeft" , this.labelDisplay.getStyle("paddingLeft") - SPEED);
if(Math.abs(this.labelDisplay.getStyle("paddingLeft")) > textWidth - this.labelDisplay.width + PADDING){
this.moveLeft = false;
}
}else{
this.labelDisplay.setStyle("paddingLeft" , this.labelDisplay.getStyle("paddingLeft") + SPEED);
if(this.labelDisplay.getStyle("paddingLeft") > PADDING){
this.moveLeft = true;
}
}
}
]]>
</fx:Script>
<s:states>
<s:State name="normal" enterState="normalState(event)"/>
<s:State name="selected" enterState="selectedState(event)"/>
</s:states>
<s:Label id="labelDisplay"
left="{PADDING}" right="8" top="8" bottom="8"
fontSize="36" verticalCenter="0" maxDisplayedLines="1"/>
</s:ItemRenderer>