Вот чем могу помочь(Листинг 2). Применяется для слежения за игроком на футбольном поле.
Примеры применения (Листинг 1)

Код AS3:
(Листинг 1)
Scrolling = new Scrollingdata(SW, SH, W, H);
scrollRect = Scrolling.getRect();
private function moveRectWath (gmrInd:int) {
Scrolling.updateScrollRect(PlMng.PlArray[gmrInd].x, PlMng.PlArray[gmrInd].y);
scrollRect = Scrolling.getRect(); // Прокрутка области
}
public function changeSkroolRect (SW:int, SH:int) { // изменяем размеры области скролла - вход в полный экран
Scrolling.setRectangle(SW, SH, W, H);
}

Код AS3:
(Листинг 2)
package Field
{
import flash.geom.Rectangle;
public class Scrollingdata
{
private var H:Number; // Полная высота окна, по которому скроллим
private var W:Number; // Полная ширина окна, по которому скроллим
private var itrnlSW:Number; // Ширина прямоугольника для скролла
private var itrnlSH:Number; // Высота прямоугольника для скролла
private var itcurDltX:Number = 0; // текущее смещение в скроле
private var itcurDltY:Number = 0; // текущее смещение в скроле
private var maxDltX:Number = 0; // максимальное смещение в скролле
private var maxDltY:Number = 0; // максимальное смещение в скролле
public function Scrollingdata (SWout:Number, SHout:Number, Wout:Number, Hout:Number) {
setRectangle (SWout, SHout, Wout, Hout);
}
/****************************************************/
public function setRectangle (SWout:Number, SHout:Number, Wout:Number, Hout:Number) {
itrnlSW = SWout; // Ширина прямоугольника для скролла
itrnlSH = SHout; // Высота прямоугольника для скролла
W = Wout; // Полная ширина окна, по которому скроллим
H = Hout; // Полная высота окна, по которому скроллим
maxDltX = W - itrnlSW; // максимальное смещение в скролле
if (maxDltX < 0) maxDltX = 0;
maxDltY = H - itrnlSH; // максимальное смещение в скролле
if(maxDltY < 0) maxDltY = 0;
}
/****************************************************/
public function getRect () : Rectangle {
var rect:Rectangle = new Rectangle(itcurDltX, itcurDltY, itrnlSW, itrnlSH); // Прокрутка области
return rect;
}
/****************************************************/
public function updateScrollRect (PlX:Number, PlY:Number)
{
itcurDltX = PlX - itrnlSW*0.5;
itcurDltY = PlY - itrnlSH*0.5;
if (itcurDltX < 0) itcurDltX = 0;
if (itcurDltY < 0) itcurDltY = 0;
if (itcurDltX > maxDltX) itcurDltX = maxDltX;
if (itcurDltY > maxDltY) itcurDltY = maxDltY;
}
/****************************************************/
public function get SW () : Number {
return itrnlSW;
}
/****************************************************/
public function get SH () : Number {
return itrnlSH;
}
/****************************************************/
public function get curDltX () : Number {
return itcurDltX;
}
/****************************************************/
public function get curDltY () : Number {
return itcurDltY;
}
/****************************************************/
}
}