Packagejp.naggg.controls
Classpublic dynamic class ScrollBar
InheritanceScrollBar Inheritance flash.display.Sprite

スクロールバーコンポーネントクラスです. fl.controls.ScrollBar クラスは今ひとつ使い勝手が気に食わないので自作しました. このクラスのインスタンス自身はビュー兼コントローラーで、 スクロール対象を指定することで扱うことができるようになります. なお、デフォルトでは縦方向のみ対応しています. 横方向に対応するには、インスタンスを回転することで対応します. 基本的な使い方は、Flash CS3 のライブラリに配置してから使います. MovieClip シンボルに jp.naggg.controls.ScrollBar を割り当ててます. ただし、そのシンボルは、track_mc, thumb_mc, up_mc, down_mc の4つの Spriteを持つことが必要ですので注意してください.  ※2010/07/11のアップデートで、up_mc と down_mc は必須ではなくなりました. イベントとしては、value の値が更新されたときに fl.events.Event.SCROLL イベントを 配信します.これは、ユーザーが UI を操作して更新したときも、および、 コンポーネントの value を操作したとき、いづれのケースでも配信されるイベントです. 注意が必要なのは、スクロール対象の cacheAsBitmap は強制的に true となります. これは、scrollRect によるスクロール速度の最適化を行ったためです. 開発当初は cacheAsBitmap の切替でグラデマスクに対応する予定でしたが、 最終的にスクロール速度の向上から、つねに true とするようにしました. さらに、scrollRect のバグ(仕様?)の都合で、 DisplayObject に scrollRect を設定した直後にその DisplayObject のサイズを 取得できず、scrollRect のサイズが反映されるまで時間が必要なので、 init() および setScrollee() を呼び出す際にデフォルトの大きさを必要とすることに 注意してください(特に、二度呼び出す場合). 2010/09/09 のアップデートでは、 スクロールバーではなくスライダーとして扱いたい場合に init() の null を渡すことで 適用できるように修正しました. 最後に以下の内容を TODO として考えています. TODO value 操作とマウスホイール・Shiftクリックなどの挙動がつながらない不具合(某案件ではパッチコードを使用した) TODO イージングに都合で value が 0 や 1 にならないなぁ・・・ TODO 全体がごちゃごちゃしている、なんとかならないかww ソース直してメソッドコストを減らして 2.0 にしたい!

View the examples



Public Properties
 PropertyDefined By
  down_mc : Sprite
ScrollBar
  enabled : Boolean
コンポーネントの有効・無効を設定します. マウス操作全般の有効・無効と同期していますが、value の値の更新は、 たとえ無効であっても反映させることができます. また、この値を変更することで見栄えは変更しないので、コントローラー側で制御する必要があります. また、必要のないときは、enabled を false にすることで処理を軽くすることができます.
ScrollBar
  fixThumbSize : Boolean
サムの大きさを変化させるかどうかのフラグ、デフォルトは false でサムの大きさは変化します.
ScrollBar
  mouseWheelFriction : Number = 0.2
マウスホイール時の摩擦
ScrollBar
  mouseWheelLevel : int = 3
マウスホイールをどこまで監視するかのレベル設定. デフォルトでは、ScrollBar インスタンスと scrollee の2つを監視します.
ScrollBar
  scrollable : Boolean
[read-only] スクロールが可能かどうかを返します. スクロール対象がマスクの大きさよりも小さくスクロールの必要がない場合hあ false を返します.
ScrollBar
  scrollee : DisplayObject
[read-only] 設定されているスクロール対象です.設定は setScrollee() を使います.
ScrollBar
  thumb_mc : Sprite
ScrollBar
  track_mc : Sprite
ScrollBar
  up_mc : Sprite
ScrollBar
  value : Number
スクロールバーの値です. 0 ~ 1 までの値で読み書きします.範囲外の数値を代入した場合、自動で丸め込みます. あくまでも割合を返すのでそこから先はコントローラー側で制御します.
ScrollBar
Public Methods
 MethodDefined By
  
コンストラクタ.
ScrollBar
  
すべてのUIを使用不能状態にします. イベントを投げるので見ための変更はイベントハンドラで行います.
ScrollBar
  
init(scrollee:DisplayObject = null, mask:DisplayObject = null, initValue:Number = 0, scrolleeWidth:Number, scrolleeHeight:Number):void
初期化を行います.このメソッドは必ず呼ぶようにしてください.
ScrollBar
  
reset():void
設定した内容をリセットします. リセットを行うものの、scrollee のデフォルトの高さは scrollRect の都合上、 すぐには取得することができません. その場合、コントローラー側での変数保存などの処理を行う必要があります.
ScrollBar
  
setScrollee(scrollee:DisplayObject, scrolleeWidth:Number, scrolleeHeight:Number):void
スクロール対象を設定します. scrollRect の描画タイミングの問題で、幅・高さを指定させており、 そのため実装は setter ではなくメソッドでとなりました. 一方で、取得は getter から行うことができます.
ScrollBar
  
すべてのUIを使用可能状態にします. イベントを投げるので見ための変更はイベントハンドラで行います.
ScrollBar
  
toString():String
[override] 文字列表現を返します.
ScrollBar
Public Constants
 ConstantDefined By
  MOUSE_WHEEL_LEVEL_ALL : int = 4
[static] マウスホイールレベル、すべて
ScrollBar
  MOUSE_WHEEL_LEVEL_NONE : int = 0
[static] マウスホイールレベル、監視しない
ScrollBar
  MOUSE_WHEEL_LEVEL_SCROLLEE : int = 2
[static] マウスホイールレベル、コンテンツのみ
ScrollBar
  MOUSE_WHEEL_LEVEL_SCROLLER : int = 1
[static] マウスホイールレベル、スクロールバーのみ
ScrollBar
Property Detail
down_mcproperty
public var down_mc:Sprite

enabledproperty 
enabled:Boolean

コンポーネントの有効・無効を設定します. マウス操作全般の有効・無効と同期していますが、value の値の更新は、 たとえ無効であっても反映させることができます. また、この値を変更することで見栄えは変更しないので、コントローラー側で制御する必要があります. また、必要のないときは、enabled を false にすることで処理を軽くすることができます.


Implementation
    public function get enabled():Boolean
    public function set enabled(value:Boolean):void
fixThumbSizeproperty 
fixThumbSize:Boolean

サムの大きさを変化させるかどうかのフラグ、デフォルトは false でサムの大きさは変化します.


Implementation
    public function get fixThumbSize():Boolean
    public function set fixThumbSize(value:Boolean):void
mouseWheelFrictionproperty 
public var mouseWheelFriction:Number = 0.2

マウスホイール時の摩擦

mouseWheelLevelproperty 
public var mouseWheelLevel:int = 3

マウスホイールをどこまで監視するかのレベル設定. デフォルトでは、ScrollBar インスタンスと scrollee の2つを監視します.

scrollableproperty 
scrollable:Boolean  [read-only]

スクロールが可能かどうかを返します. スクロール対象がマスクの大きさよりも小さくスクロールの必要がない場合hあ false を返します.


Implementation
    public function get scrollable():Boolean
scrolleeproperty 
scrollee:DisplayObject  [read-only]

設定されているスクロール対象です.設定は setScrollee() を使います.


Implementation
    public function get scrollee():DisplayObject
thumb_mcproperty 
public var thumb_mc:Sprite

track_mcproperty 
public var track_mc:Sprite

up_mcproperty 
public var up_mc:Sprite

valueproperty 
value:Number

スクロールバーの値です. 0 ~ 1 までの値で読み書きします.範囲外の数値を代入した場合、自動で丸め込みます. あくまでも割合を返すのでそこから先はコントローラー側で制御します.


Implementation
    public function get value():Number
    public function set value(value:Number):void
Constructor Detail
ScrollBar()Constructor
public function ScrollBar()

コンストラクタ.

Method Detail
hideControls()method
public function hideControls():void

すべてのUIを使用不能状態にします. イベントを投げるので見ための変更はイベントハンドラで行います.

init()method 
public function init(scrollee:DisplayObject = null, mask:DisplayObject = null, initValue:Number = 0, scrolleeWidth:Number, scrolleeHeight:Number):void

初期化を行います.このメソッドは必ず呼ぶようにしてください.

Parameters

scrollee:DisplayObject (default = null) — スクロールを行う対象、スライダーとして使いたい場合はnullを渡します
 
mask:DisplayObject (default = null) — スクロール対象にかけるマスク、スライダーとして使いたい場合はnullを渡します
 
initValue:Number (default = 0) — スクロール値の初期値
 
scrolleeWidth:Number (default = NaN) — スクロール対象の幅.このパラメータは scrollRect の描画タイミングの都合上、指定するのが最適と言えます.省略した場合、scrollee.width が適用されます.
 
scrolleeHeight:Number (default = NaN) — スクロール対象の高さ.このパラメータは scrollRect の描画タイミングの都合上、指定するのが最適と言えます.省略した場合、scrollee.height が適用されます.

reset()method 
public function reset():void

設定した内容をリセットします. リセットを行うものの、scrollee のデフォルトの高さは scrollRect の都合上、 すぐには取得することができません. その場合、コントローラー側での変数保存などの処理を行う必要があります.

setScrollee()method 
public function setScrollee(scrollee:DisplayObject, scrolleeWidth:Number, scrolleeHeight:Number):void

スクロール対象を設定します. scrollRect の描画タイミングの問題で、幅・高さを指定させており、 そのため実装は setter ではなくメソッドでとなりました. 一方で、取得は getter から行うことができます.

Parameters

scrollee:DisplayObject
 
scrolleeWidth:Number (default = NaN)
 
scrolleeHeight:Number (default = NaN)

showControls()method 
public function showControls():void

すべてのUIを使用可能状態にします. イベントを投げるので見ための変更はイベントハンドラで行います.

toString()method 
override public function toString():String

文字列表現を返します.

Returns
String
Constant Detail
MOUSE_WHEEL_LEVEL_ALLConstant
public static const MOUSE_WHEEL_LEVEL_ALL:int = 4

マウスホイールレベル、すべて

MOUSE_WHEEL_LEVEL_NONEConstant 
public static const MOUSE_WHEEL_LEVEL_NONE:int = 0

マウスホイールレベル、監視しない

MOUSE_WHEEL_LEVEL_SCROLLEEConstant 
public static const MOUSE_WHEEL_LEVEL_SCROLLEE:int = 2

マウスホイールレベル、コンテンツのみ

MOUSE_WHEEL_LEVEL_SCROLLERConstant 
public static const MOUSE_WHEEL_LEVEL_SCROLLER:int = 1

マウスホイールレベル、スクロールバーのみ

Examples
     // 基本的な設定とトゥイーン
     import jp.naggg.controls.ScrollBar;
     import fl.transitions.Tween;
     import fl.motion.easing.
     var mask1_mc:MovieClip;
     var content1_mc:MovieClip;
     var scroller1_mc:ScrollBar;
     scroller1_mc.init(content1_mc, mask1_mc, false, 0);
     scroller1_mc.addEventListener(Event.SCROLL, trace);
     var tw:Tween = new Tween(scroller1_mc, "value", Bounce.easeOut, 1, 0, 60);
     tw.start();