<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
viewSourceURL="srcview/index.html"
width="300" height="50">
<fx:Script>
<![CDATA[
private const pixelsPerSecond:Number = 500;
private var prevTime:Number;
private var movingRight:Boolean = true;
private var timer:Timer = new Timer(20, 0);
private function timerHandler(event:Event):void
{
var currentTime:Number = getTimer();
var deltaTime:Number = currentTime - prevTime;
var pixelsToMove:Number = pixelsPerSecond * deltaTime/1000;
var overshoot:Number;
if (movingRight)
{
button.x += pixelsToMove;
if (button.x + button.width > width)
{
overshoot = button.x + button.width - width;
button.x = width - button.width - overshoot;
movingRight = false;
}
}
else
{
button.x -= pixelsToMove;
if (button.x < 0)
{
overshoot = button.x;
button.x = -overshoot;
movingRight = true;;
}
}
prevTime = currentTime;
}
private function startAnimation():void
{
timer.addEventListener(TimerEvent.TIMER, timerHandler);
timer.start();
prevTime = getTimer();
}
]]>
</fx:Script>
<s:Button id="button" label="Move Me" click="startAnimation()"/>
<s:HGroup y="40">
<s:Label text="Delay"/>
<s:HSlider id="slider" minimum="1" maximum="250" value="20"
change="timer.delay = slider.value"/>
</s:HGroup>
</s:Application>