PrincessRoma на пользуйся, если срочно надо, как текст, так и спрайт будет скролить.

Код AS3:
package com.in4core.navigation
{
import com.greensock.TweenMax;
import flash.display.DisplayObject;
import flash.display.DisplayObjectContainer;
import flash.display.Sprite;
import flash.errors.IllegalOperationError;
import flash.events.MouseEvent;
import flash.geom.Rectangle;
import flash.text.TextField;
/**
* ...
* @author in4core
* Display or Text Object Scroller
* use addScroll methods to define Scroller
* Version 1.0
*/
public final class UIScrollBar
{
//-----------------DisplayObjectInit-----------//
/*objects*/
private var _scroll:Sprite;
private var _maskHeight:int;
private var _content:DisplayObjectContainer;
private var _rect:Rectangle;
/*coords*/
private var _startYScroll:int;
private var _startYContent:int;
private var _wayOfScroll:int;
//-----------------TextFieldInit-----------//
/*objects*/
private var _tscroll:Sprite;
private var _tf:TextField;
private var _trect:Rectangle;
/*coords*/
private var _wayOfTextScroll:int;
private var _delta:int;
/////////////////////////////////////////////////////////////////////
//!4
//! 4 PUBLIC
//! 4
/////////////////////////////////////////////////////////////////////
public function addScrollObject( scroll:Sprite,maskHeight:int,content:DisplayObjectContainer,way:int ):void {
this._scroll = scroll;
this._maskHeight = maskHeight;
this._content = content;
this._wayOfScroll = way;
this._startYScroll = _scroll.y;
this._startYContent = _content.y;
this._rect = new Rectangle(_scroll.x, _scroll.y, 0, _wayOfScroll);
_scroll.addEventListener(MouseEvent.MOUSE_DOWN, dragStart);
_scroll.stage.addEventListener(MouseEvent.MOUSE_UP, dragStop);
}
public function addScrollText( tf:TextField , scroll:Sprite , way:int ):void {
this._tscroll = scroll;
this._tf = tf;
this._wayOfTextScroll = way;
this._trect = new Rectangle(_tscroll.x, _tscroll.y, 0, _wayOfTextScroll);
_tscroll.addEventListener(MouseEvent.MOUSE_DOWN , tdragStart);
_tscroll.stage.addEventListener(MouseEvent.MOUSE_UP , tdragStop);
}
public function destroy():void {
if (_scroll != null ) {
_scroll.stage.removeEventListener(MouseEvent.MOUSE_MOVE, updatePosition);
_scroll.removeEventListener(MouseEvent.MOUSE_DOWN, dragStart);
_scroll.stage.removeEventListener(MouseEvent.MOUSE_UP, dragStop);
_scroll.stage.removeEventListener(MouseEvent.MOUSE_WHEEL , onWheel);
}
if (_tscroll != null ) {
_tscroll.removeEventListener(MouseEvent.MOUSE_DOWN , tdragStart);
_tscroll.stage.removeEventListener(MouseEvent.MOUSE_UP , tdragStop);
_tscroll.stage.removeEventListener(MouseEvent.MOUSE_MOVE ,updateTextPosition);
}
TweenMax.killTweensOf(_content);
}
/////////////////////////////////////////////////////////////////////
//!4
//! 4 PRIVATE
//! 4
/////////////////////////////////////////////////////////////////////
private function tdragStart(e:MouseEvent):void {
_tscroll.startDrag(false, _trect);
_tscroll.stage.addEventListener(MouseEvent.MOUSE_MOVE ,updateTextPosition);
}
private function tdragStop(e:MouseEvent):void {
_tscroll.stopDrag();
_tscroll.stage.removeEventListener(MouseEvent.MOUSE_MOVE ,updateTextPosition);
}
private function dragStart(e:MouseEvent):void {
_scroll.startDrag(false, _rect);
_scroll.stage.addEventListener(MouseEvent.MOUSE_MOVE, updatePosition);
}
private function dragStop(e:MouseEvent):void {
_scroll.stopDrag();
_scroll.stage.removeEventListener(MouseEvent.MOUSE_MOVE, updatePosition);
}
public function updatePosition (e:MouseEvent):void {
if (_maskHeight < _content.height)
{
var yy:int = _startYContent - ( (_content.height - _maskHeight) / _wayOfScroll ) * ( _scroll.y - _startYScroll );
//TweenMax.to(_content , 1 , { y:yy } );
_content.y = yy;
}
}
private function updateTextPosition(e:MouseEvent):void {
_tf.scrollV = Math.round(((_tscroll.y - _trect.y) / _wayOfTextScroll ) * _tf.maxScrollV);
}
public function useWheel(delta:int = 4):void
{
_delta = delta;
_scroll.stage.addEventListener(MouseEvent.MOUSE_WHEEL , onWheel);
}
private function onWheel(e:MouseEvent):void
{
_scroll.y = _scroll.y - e.delta * _delta;
if (_scroll.y < _startYScroll) _scroll.y = _startYScroll;
else if (_scroll.y > _wayOfScroll + _startYScroll) _scroll.y = _wayOfScroll + _startYScroll;
updatePosition(null);
}
public function lockWheel():void
{
_scroll.stage.removeEventListener(MouseEvent.MOUSE_WHEEL , onWheel);
}
public function unlockWheel():void
{
_scroll.stage.addEventListener(MouseEvent.MOUSE_WHEEL , onWheel);
}
}
}