0

私は音楽プレーヤーで作業しており、作業中のプレイリストがありますが、多くの曲が追加された場合に画面外に出ないように、プレイリストを短くする必要があります。そのために、マスクとスクロールバーを作成しました。曲名はプレイリストにあり、いつでも新しい曲を追加できます。

function startDragging2(MouseEvent)
    {
        Playlistslider.playlistSliderHandle.startDrag(false,rectangle2);
        dragging = true;
    }

    function stopDragging2(MouseEvent)
    {
        if(dragging)
        {
            dragging = false;
            Playlistslider.playlistSliderHandle.stopDrag();
        }
    }

    function adjustY(Event)
    {
        var myY:Number = Playlistslider.playlistSliderHandle.y;
        CollectionMC.y = (myY * -CollectionMC.numChildren);  <--------
    }

今私がやりたいことは、曲名を含む親ムービークリップの位置をスクロールバー ハンドルが決定するようにすることです。下にスクロールすると、リストにある曲の数を超えないようにしたい. 現在はスクロールしていますが、十分ではないため、リスト全体が表示されません。

必要なのは、スライダー ハンドルの y 位置に対する親ムービークリップの y 位置を決定する単純な数式です。

前もって感謝します、

ミラノ。

編集: 追加するのを忘れていました。最初の名前は Y:20 にあります。Y:40 で 2 番目。3 番目の Y:60 など

編集 2: この数式では近いですが、常に 6 つの名前 (120 Y) のスペースをスクロールしすぎてしまいます。

var myY:Number = Playlistslider.playlistSliderHandle.y;
CollectionMC.y = -(myY * (CollectionMC.numChildren / 6));

編集 3: 簡単にするために、マスクとスクロールバーの高さを 100 に変更しました。マスク内に 5 つの名前を表示できるようになりました。5 曲を追加するとスクロールバーが表示されますが、すべての曲がマスク内に収まるため、使用時に下にスクロールすることは想定されていません。しかし、別の名前を追加すると、下にスクロールして6番目の名前が表示され、最初の名前が表示されないようにする必要があります。しかし、代わりに、追加した曲の数に関係なく、マスクのサイズ(100)を想定よりもさらに下にスクロールします。

EDIT 4:解決策を見つけました。正しい式は次のとおりです。

CollectionMC.y = (((CollectionMC.numChildren - 5) * -0.2) * myY);
4

1 に答える 1

0

なぜ fl や flex のスクロールバーを使わないのでしょうか? 私がそれを提案したことを嫌う人がいることは知っていますが、彼がやりたいことは、不快感を無視できるほど単純です. 好きなように皮をむくこともできます!

于 2013-05-15T13:56:24.740 に答える