独自のスライダーを簡単に作成し、進行中の何かを学ぶことができます:)。
スライダー内-ノブの移動は、ギャラリーのサイズがスライダーのサイズに変換されるギャラリーの移動に対応している必要があります。基本的にはそれだけです。したがって、いくつかの数式と基本的な要素が必要になります。
gallery.width / slider.width-ギャラリーがスライダーよりも広いかどうかを判断するには(スライドを続行する場合)、この比率を使用してノブのサイズを判断することもできます。したがって、ギャラリーがスライダーよりも小さい場合は、スライダーをレンダリングしたり、ノブをスライダーのサイズにしたりできないため、移動できません。または、ノブをギャラリーのオーバーフローのサイズに比例したサイズにします。ここで書いているすべてのものを試してみてください。
これらの要素も使用する必要があります。
- ギャラリー(表示オブジェクト)、
- ギャラリー(ギャラリーの表示部分)のマスク/コンテナ、
- スライダー、
- つまみ。
- 長方形オブジェクト
ギャラリーは、子としてすべての画像を含む単なる表示オブジェクトになります。
マスク/コンテナは、ギャラリーの一部が表示される領域の境界を提供する表示オブジェクトになります
スライダー-任意のスプライト
ノブ-任意のスプライト
Rectangle-はもちろんRectangleオブジェクトであり、slider.widthの幅-nob.width、高さは0なので、次の関数を使用して、スライダーの外側に出ることなく、ノブをスライダーに沿ってドラッグできます。
knob.startDrag(false, rect); // Use it at MouseEvent.MOUSE_DOWN of knob
knob.stopDrag() // Use it at MouseEvent.MOUSE_OUT of knob
次のコードで長方形を作成できます。
new Rectangle(0, knob.x, slider.width - knob.width, 0);
そして、ノブの移動をギャラリーの移動に変換する必要があります。これは次のようになります。
// When moving knob you can use this formula:
gallery.x = knob.y / (slider.width - knob.width) * (gallery.width - mask.width); // Use it at MouseEvent.MOUSE_MOVE of knob
そうだと思いますが、先ほど書いた図書館を元に頭のてっぺんから書いたので、何か問題があったら教えてください。でもそれが基本だと思います。