
Код AS3:
package pkt
{
import mx.controls.VScrollBar;
import mx.core.UIComponent;
import mx.events.ScrollEvent;
public class CScrollBar extends VScrollBar {
public const heightScroll:int = 787;
public const arrowSize:int = 7;
public function CScrollBar( hght:int = heightScroll, wdht:int = 0 ) : void {
super( );
x = wdht;
direction = "vertical";
height = heightScroll + arrowSize * 2;
if( hght < height ){
visible = true;
} else { visible = false; }
pageSize = hght;
minScrollPosition = 0;
maxScrollPosition = height - hght;
pageScrollSize = 0;
lineScrollSize = 1;
addEventListener( mx.events.ScrollEvent.SCROLL, ScrollIt );
}
private function MoveObject( ) : void {
if( document != null ) {
height = heightScroll + arrowSize * 2;
pageScrollSize = 0;
pageSize = document.height;
maxScrollPosition = height - document.height;
document.verticalScrollPosition = scrollPosition;
document.verticalPageScrollSize = pageScrollSize;
document.verticalLineScrollSize = lineScrollSize;
document.tmpTxt.text = " scrollPosition - " + scrollPosition + "\n pageSize - " + pageSize + "\n lineScrollSize - " + lineScrollSize + "\n maxScrollPosition - " + maxScrollPosition + "\n minScrollPosition - " + minScrollPosition + " \n height - " + height + "\n pageScrollSize - " + pageScrollSize;
//maxVerticalScrollPosition = 1180 [0x49c]
//trace( " document not null ");
} //else trace( " document is null ");
}
public function SetScroll( _component:UIComponent = null ) : void{
height = heightScroll + arrowSize * 2;
if( _component != null ) {
if( _component.height < height ){
visible = true;
pageSize = _component.height;
pageScrollSize = 0;
maxScrollPosition = height - _component.height;
if( document != null ) document.tmpTxt.text = " scrollPosition - " + scrollPosition + "\n pageSize - " + pageSize + "\n lineScrollSize - " + lineScrollSize + "\n maxScrollPosition - " + maxScrollPosition + "\n minScrollPosition - " + minScrollPosition + " \n height - " + height + "\n pageScrollSize - " + pageScrollSize;
} else visible = false;
}
}
private function ScrollIt( evnt:Event ) : void {
MoveObject( );
}
}
}

Код AS3:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="OnCreationComplite( );" verticalScrollPolicy="off" >
<mx:Script>
<![CDATA[
import pkt.CScrollBar;
public var VSB:CScrollBar;
public function OnCreationComplite( ) : void {
VSB = new CScrollBar( this.height, this.width );
addChild( VSB );
this.verticalScrollPolicy = "on";
this.verticalScrollBar = VSB;
addEventListener( mx.events.ResizeEvent.RESIZE, ResizeAplication );
}
private function ResizeAplication( evnt:Event ) : void {
VSB.SetScroll( this );
}
]]>
</mx:Script>
<mx:Image x="0" y="0" source="@Embed(source='img.jpg')" />
<mx:Text x="433" y="308" text="Text" width="285" height="184" id="tmpTxt"/>
</mx:Application>
Стрелки скролла улетают в вверх вместе с рисунком, я не пойму почему?
Добавлено через 12 часов 57 минут
Походу надо набраться терпения
Добавлено через 13 часов 19 минут
Походу так лучше не делать

Код AS3:
this.verticalScrollPolicy = "on";
this.verticalScrollBar = VSB;
Лучше сделать независимый скролл и в зависимости от ресайз и от положения скролл определять х или у объекДа?