解決したい課題
スライダーのツールチップのスタイルは、以下の用に適用できる。
<fx:Style>
.myDataTipStyle { ... }
</fx:Style>
mx.controls.HSlider(slider).dataTipStyleName = "myDataTipStyle";
しかし、スライダーのつまみをドラッグ中に上記スタイルを変更しても、ツールチップのスタイルは変更されない。
HSlider(event.currentTarget).dataTipStyleName = "otherStyle";
解決策
ドラッグイベントをハンドルして、直接ツールチップオブジェクトにスタイルを適用する。
サンプル:
slider.addEventListener(SliderEvent.THUMB_DRAG, function(event:SliderEvent):void
{
var toolTips:IChildList = HSlider(event.currentTarget).systemManager.toolTipChildren;
var datatip:SliderDataTip = toolTips.getChildAt(0) as SliderDataTip;
datatip.styleName = "otherStyle";
}
補足
mx.controls.sliderClasses.Sliderの実装をみると解るように、ツールチップオブジェクトの生存期間は、つまみを押下(onThumbPress)してリリース(onThumbRelease)するまで。
ドラッグ中にテキスト等を更新しているが、Sliderに登録(dataTipStyleName)したスタイルが渡されていない。初期化時(onThumbPress)のみ。
従って、いくらSliderに対してツールチップのスタイルを更新しても更新されない結果となる。
(※sparkの方を使え、というのは無しで)