Files
2025-11-24 14:19:51 +05:30

105 lines
2.1 KiB
ActionScript

import mx.utils.Delegate;
class PageNavigator extends MovieClip
{
[Inspectable(name = "Page Total", type = "Number", defaultValue = 1)]
private var mTotalPages:Number;
private var mcLeftArrow:MovieClip;
private var mcRightArrow:MovieClip;
private var tfPage:TextField;
private var mCurPage:Number;
private var mNextPageCallback:Function;
private var mPreviousPageCallback:Function;
private var mIsEnabled:Boolean;
public function PageNavigator()
{
mCurPage = 1;
mTotalPages = 1;
mIsEnabled = true;
}
public function onLoad():Void
{
OnPageChanged();
mcRightArrow.onPress = Delegate.create( this, NextPage );
mcLeftArrow.onPress = Delegate.create( this, PreviousPage );
}
public function AddCallbacks( _onNextPage:Function, _onPreviousPage:Function )
{
mNextPageCallback = _onNextPage;
mPreviousPageCallback = _onPreviousPage;
ConsoleWindow.Trace( "Adding calls: " + _onNextPage + ", " + _onPreviousPage );
}
public function Disable():Void
{
mIsEnabled = false;
}
public function Enable():Void
{
mIsEnabled = true;
}
public function SetTotalPages( _total ):Void
{
mTotalPages = _total;
OnPageChanged();
_visible = ( mTotalPages > 0 );
}
public function GoToPage( _page:Number ):Void
{
if ( _page > 0 && _page <= mTotalPages )
{
mCurPage = 1;
OnPageChanged();
}
}
private function NextPage():Void
{
if ( mIsEnabled && mCurPage + 1 <= mTotalPages )
{
mCurPage++;
OnPageChanged();
mNextPageCallback.call();
}
}
public function PreviousPage():Void
{
if ( mIsEnabled && mCurPage - 1 > 0 )
{
mCurPage--;
OnPageChanged();
mPreviousPageCallback.call();
}
}
private function OnPageChanged():Void
{
tfPage.text = String(mCurPage) + " OF " + String(mTotalPages);
mcLeftArrow._visible = true;
mcRightArrow._visible = true;
if ( mCurPage == mTotalPages )
{
mcRightArrow._visible = false;
}
if ( mCurPage == 1 )
{
mcLeftArrow._visible = false;
}
}
}