Packagejp.naggg.controls
Classpublic dynamic class Slider
InheritanceSlider Inheritance flash.display.Sprite

スライダーコンポーネントクラスです. fl.controls.Slider クラスは今ひとつ使い勝手が気に食わないので自作しました. インスタンスの value プロパティは 0 ~ 1 と割合としての値を取ります. これは、fl.controls.Slider の value とは性質が異なるので注意してください. 基本的な使い方は、Flash CS3 のライブラリに配置してから使います. その際、シンボルに必要な要素は、 サム  :thumb_mc:Sprite、中心点は中央が望ましい トラック:track_mc:Sprite、中心点の制限はなし の2つの要素になります. fl.controls.Slider の仕様を受け継ぐ都合、 valueを手動で更新した場合は SliderEvent.CHANGE は配信されません. その際は dispatchChangeEvent を併用するようにします. init() メソッドでは自動的に呼ばれるように設計しています. また、このスライダーは基本横向きのみに対応しています. 縦に配置したい場合は、自身の回転を制御するなど行います. 最後に注意事項を2つ. まず、このクラスを使うには、flパッケージが必要になります. コンパイルするときにそれを含ませるには、 ComponentShim というコンポーネントアセットを書き出す必要があります. その設置方法は、  ステージに、fl.controls.Slider コンポーネントを配置   → ライブラリ /Component Assets/_private/ComponentShim を選択   → 右クリックよりリンケージ、最初のフレームに書き出しにチェック とします.

View the examples



Public Properties
 PropertyDefined By
  enabled : Boolean
コンポーネントが操作可能かどうか. false を設定した場合、サム・トラックの操作ができなくなります.
Slider
  isDragging : Boolean
[read-only] サムがドラッグ中かの状態です.
Slider
  liveDragging : Boolean = false
スライダーのドラッグ中に ChangeEvent を発信するか
Slider
  thumb_mc : Sprite
Slider
  track_mc : Sprite
Slider
  value : Number
スライダーの値です. 0 ~ 1 までの値で読み書きします.範囲外の数値を代入した場合、自動で丸め込みます. あくまでも割合を返すのでそこから先はコントローラー側で制御します.
Slider
Public Methods
 MethodDefined By
  
コンストラクタ.
Slider
  
dispatchChangeEvent(newValue:Number):void
SliderEvent.CHANGE イベントを配信します. これは、value プロパティを更新した際にイベントが配信されないという 仕様に対抗するためです(これはおそらく無限ループ回避のためと解釈). 値を更新してイベント配信を行うことにも対応するには、 引数に newValue を渡すことで対応することができます.
Slider
  
init(value:Number, dispatchChangeEvent:Boolean = true):void
初期化を行います.
Slider
  
toString():String
[override] 文字列表現を返します.
Slider
Property Detail
enabledproperty
enabled:Boolean

コンポーネントが操作可能かどうか. false を設定した場合、サム・トラックの操作ができなくなります.


Implementation
    public function get enabled():Boolean
    public function set enabled(value:Boolean):void
isDraggingproperty 
isDragging:Boolean  [read-only]

サムがドラッグ中かの状態です.


Implementation
    public function get isDragging():Boolean
liveDraggingproperty 
public var liveDragging:Boolean = false

スライダーのドラッグ中に ChangeEvent を発信するか

thumb_mcproperty 
public var thumb_mc:Sprite

track_mcproperty 
public var track_mc:Sprite

valueproperty 
value:Number

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


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

コンストラクタ.

Method Detail
dispatchChangeEvent()method
public function dispatchChangeEvent(newValue:Number):void

SliderEvent.CHANGE イベントを配信します. これは、value プロパティを更新した際にイベントが配信されないという 仕様に対抗するためです(これはおそらく無限ループ回避のためと解釈). 値を更新してイベント配信を行うことにも対応するには、 引数に newValue を渡すことで対応することができます.

Parameters

newValue:Number (default = NaN)

init()method 
public function init(value:Number, dispatchChangeEvent:Boolean = true):void

初期化を行います.

Parameters

value:Number (default = NaN) — valueプロパティの値、省略した場合は NaN となり、オーサリング時の値が適用されます.
 
dispatchChangeEvent:Boolean (default = true) — dispatchChangeEvent() メソッドを実行するかどうかを指定します.

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

文字列表現を返します.

Returns
String
Examples
     import fl.events.SliderEvent;
     import fl.transitions.Tween;
     import fl.motion.easing.
     import jp.naggg.controls.Slider;
     
     var slider_mc:Slider;
     var map_mc:Sprite;
     
     // init() addEventListener の記述順には注意が必要
     slider_mc.addEventListener(SliderEvent.CHANGE, slider1ChangeHandler);
     slider_mc.init(0.3, false);
     slider_mc.liveDragging = true;
         // こういう順序でもOK
         // slider_mc.init(0.3, false);
         // slider_mc.addEventListener(SliderEvent.CHANGE, slider1ChangeHandler);
         // slider_mc.dispatchChangeEvent();
     
     // スライダーの値が更新されたとき
     function sliderChangeHandler(evt:SliderEvent):void{
         var s:Number = 0.5 + 0.5 Slider(evt.target).value;
         tweenX = new Tween(map_mc, "scaleX", Sine.easeOut, content_mc.scaleX, s, 10);
         tweenY = new Tween(map_mc, "scaleY", Sine.easeOut, content_mc.scaleY, s, 10);
         tweenX.start();
         tweenY.start();
     }
     
     // 自動でアニメーション
     slider_mc.enabled = false;
     addEventListener(Event.ENTER_FRAME, 
         function(evt:Event){
             slider_mc.value += 0.02;
             slider_mc.dispatchChangeEvent();
             if(slider_mc.value >= 1){
                 removeEventListener(evt.type, arguments.callee);
                 slider_mc.enabled = true;
             }
         }
     );