SeekBar コンポーネントと VolumeBar コンポーネントは似ていますが、機能は異なります。 各コンポーネントはハンドルを備え、同じハンドル追跡メカニズムを使用し、内部にネストされたクリップの再生状況とロード状況を追跡する機能をサポートしています。
FLVPlayback コンポーネントの ActionScript コードでは、SeekBar コンポーネントまたは VolumeBar コンポーネントの基準点(原点またはゼロ点)はコンテンツの左上隅にあると見なされる場合が多いので、この規則を守ることが重要です。守らない場合、ハンドル、再生状況ムービークリップ、およびロード状況ムービークリップに関して問題が発生する可能性があります。
スキン SWF ファイルのシークバーでは、実行時に拡大 / 縮小する必要があるので 9 スライスの拡大 / 縮小が使用されますが、SeekBar FLV カスタム UI コンポーネントにはネストされたムービークリップが含まれるので、9 スライスの拡大 / 縮小を使用することはできません。SeekBar の幅や高さを大きくする場合は、拡大するのではなくコンテンツを変更してください。
ハンドル
ハンドルムービークリップのインスタンスはフレーム 2 にあります。BackButton コンポーネントおよび ForwardButton コンポーネントと同様に、コンポーネントが実際にフレーム 2 に移動することはありません。ムービークリップがここに配置されるのは、編集を簡単にし、シンボルプロパティダイアログボックスの「最初のフレームに書き出し」チェックボックスをオンにすることなく SWF ファイルにロードするためです。 ただし、「最初のフレームに書き出し」チェックボックスはオンにする必要があります。
ハンドルムービークリップの背景に、アルファが 0 に設定された矩形がある場合があります。この矩形によって、ハンドルのヒット領域が大きくなるので、ボタンのヒット状態のように、その外観を変えずにハンドルがつかみやすくなります。ハンドルは実行時に動的に作成されるので、ボタンではなくムービークリップである必要があります。 アルファが 0 に設定されたこの矩形を必要とする他の理由はなく、通常、ハンドルの内部は任意のイメージで置き換えることができます。 ただし、ハンドルムービークリップの中央で基準点を水平方向の中央に維持することをお勧めします。
次の ActionScript コードは SeekBar コンポーネントのフレーム 1 にあり、ハンドルを管理します。
stop();
handleLinkageID = "SeekBarHandle";
handleLeftMargin = 2;
handleRightMargin = 2;
handleY = 11;
stop()
関数の呼び出しは、フレーム 2 のコンテンツのために必要です。
2 行目は、ハンドルとして使用するシンボルを指定します。フレーム 2 のハンドルムービークリップインスタンスのみを編集する場合、この指定を変更する必要はありません。FLVPlayback コンポーネントは実行時に、指定したムービークリップのインスタンスを Bar コンポーネントインスタンスの子としてステージ上に作成します。これにより、同じ親ムービークリップを持つことになります。 そのため、バーがルートレベルにある場合は、ハンドルもルートレベルにある必要があります。
変数
handleLeftMargin
はハンドルの元の場所(0%)を指定し、変数
handleRightMargin
は最後の場所(100%)を指定します。数値はバーコントロールの左右の端からのオフセットを示し、正の数値はバー内部に限度をマークし、負の数値はバー外部に限度をマークします。 これらのオフセットは、基準点に基づいてハンドルが移動できる場所を示します。 ハンドルの中央に基準点を配置した場合、ハンドルの左右の端はマージンを越えます。シークバームービークリップが正常に機能するには、そのコンテンツの左上隅に基準点がある必要があります。
変数
handleY
は、バーインスタンスを基準にしたハンドルの
y
位置を指定します。これは、各ムービークリップの基準点に基づいています。 サンプルハンドルの基準点は、表示される部分に相対的に配置されるように三角形の頂点にあります。非表示のヒット状態矩形は無視されます。 また、バームービークリップが正常に機能するには、そのコンテンツの左上隅に基準点を維持する必要があります。
そのため、これらの限度を設定すると、バーコントロールが (100, 100) に設定され、幅が 100 ピクセルである場合、ハンドルは水平方向では 102 ~ 198 の範囲となり、垂直方向では 111 の位置となります。
handleLeftMargin
および
handleRightMargin
を -2 に変更し、
handleY
を -11 に変更した場合、ハンドルの水平方向の範囲は 98 ~ 202 となり、垂直方向の位置は 89 となります。
再生状況ムービークリップとロード状況ムービークリップ
SeekBar コンポーネントには再生状況ムービークリップがあり、VolumeBar コンポーネントにはロード状況ムービークリップがあります。ただし、実際の個々の SeekBar コンポーネントや VolumeBar コンポーネントには、いずれか一方または両方のムービークリップがある場合も、どちらもない場合もあります。これらのムービークリップは構造的には同じであり、同じように動作しますが、異なる値を追跡します。 再生状況ムービークリップは FLV ファイルがダウンロードされると塗りつぶされ (FMS からのストリーミングの場合は常に塗りつぶされるので、HTTP ダウンロードのみに有効です)、ロード状況ムービークリップはハンドルが左から右に移動すると塗りつぶされます。
FLVPlayback コンポーネントは特定のインスタンス名でこれらのムービークリップインスタンスを検索するので、再生状況ムービークリップインスタンスは、その親としてバームービークリップを持ち、インスタンス名が progress_mc である必要があります。 ロード状況ムービークリップインスタンスのインスタンス名は fullness_mc である必要があります。
再生状況ムービークリップおよびロード状況ムービークリップは、内側にネストした fill_mc ムービークリップインスタンスを使用して設定することも、使用しないで設定することもできます。 VolumeBar fullness_mc ムービークリップは、fill_mc ムービークリップを使用する方法を示し、SeekBar progress_mc ムービークリップは fill_mc ムービークリップを使用しない方法を示します。
内側にネストした fill_mc ムービークリップを使用する方法は、拡大 / 縮小すると外観が湾曲してしまう塗りを使用する場合に便利です。
VolumeBar fullness_mc ムービークリップでは、ネストされた fill_mc ムービークリップインスタンスがマスクされます。 ムービークリップの作成時にマスクするか、または実行時に動的にマスクが作成されます。 ムービークリップを使用してマスクする場合は、インスタンスに
mask_mc
という名前を付け、パーセンテージが 100%のときに fill_mc が表示されるように設定します。fill_mc をマスクしない場合、動的に作成されるマスクは矩形になり、fill_mc (100%) と同じサイズとなります。
fill_mc ムービークリップは、fill_mc.slideReveal が
true
または
false
のいずれであるかに応じて、2 つの方法のいずれかで表示されます。
fill_mc.slideReveal が
true
の場合、fill_mc は左から右に移動し、マスクを通じて表示されます。0%では左端に配置されるので、マスクを通じて何も表示されません。 パーセンテージが増えると 100%になるまで右に移動し、ステージ上で作成された場所に戻ります。
fill_mc.slideReveal が
false
または undefined(デフォルトのビヘイビアー)の場合、左から右に移動すると共にマスクのサイズが変わり、fill_mc のより多くの部分が表示されます。0%の場合、マスクは水平方向に 05 まで拡大され、パーセントが増えるにつれて、100%で fill_mc がすべて表示されるまで、
scaleX
は増大します。mask_mc が作成時に拡大 / 縮小されている可能性があるので、これは
scaleX
= 100 であるとは限りません。
fill_mc を使用しない方法は fill_mc を使用する方法よりも簡単ですが、塗りは水平方向に湾曲します。 この湾曲を望まない場合は、fill_mc を使用する必要があります。 SeekBar progress_mc で、この方法を示します。
再生状況ムービークリップまたはロード状況ムービークリップは、パーセンテージに基づいて水平方向に拡大 / 縮小されます。 0% では、インスタンスの
scaleX
は 0 に設定され、非表示になります。パーセンテージが大きくなると
scaleX
は調整され、100%で、クリップのサイズは作成時のステージ上でのサイズと同じになります。クリップインスタンスが作成時に拡大 / 縮小されている可能性があるので、これは
scaleX
= 100 であるとは限りません。