2009-04-13 24 views
1

メニュー項目を動的にロードするムービークリップを含むメニューシステムを作成するFlashプロジェクトを作成しています。Flash - 動的にロードされたムービークリップを含む領域をスクロール

メニューにメニュー領域よりも大きな項目があると、スクロールバーが表示されます。

メニュー領域の上にマスクを置いて、マスク内で上下にスクロールするコントロールがある場所にムービークリップを置くことができますが、動的にロードされるムービークリップは表示されません。マスク。

私はこれをインターネットで検索しましたが、私が見つけることができるすべてのスクロールバーのチュートリアルは、動的にロードされたムービークリップがある領域ではなくテキスト領域を扱います。

誰かがこれについての良いチュートリアルを知っているか、これを行うためのエレガントな方法についての提案をしていますので、数学的なハックを作って動作させる必要はありませんか?

ありがとうございました

答えて

1

あなたの後ろのものが正確ではありません。

Flash CS3/AS3を使用して簡単にテストし、マスク(スクロールボックスの底面)内を移動するアイテムをロードしました。

最初にマスクレイヤーを作成し、マスクの子レイヤーとして新しいレイヤーを作成しました。新しい空のMovieClipをマスクレイヤーの子に追加しました。このMovieClipに「mcItems」という名前を付けました。

次に、次のフレームスクリプトを添付しました(もちろん、Classを使用することをお勧めします)。

for (var i:Number=0; i < 3; ++i) 
    { 
     var loader:Loader = new Loader(); 
     loader.load(new URLRequest('Content.swf')); 
     mcItems.addChild(loader); 
     loader.x = i * 120; 
    }; 
    function update (event:Event) 
    { 
     mcItems.x = 120*Math.sin(getTimer()/500) - 60; 
    }; 
    addEventListener(Event.ENTER_FRAME, update); 

これで、Content.swfは120×120ピクセルの灰色のボックスに過ぎません。私のマスクは240x120です。実行すると、3つのContent.swfボックスがロードされ、マスクされた領域の内側を予想通りにスライドします。

スクロールバーのコードについては、「数学ハック」の意味がわかりませんが、基本的な主体はユニットのセットを別のセットに変換しているということです。あなたはあなたの "マスクの幅/読み込まれたアイテムの合計"単位を "スクロールハンドル幅/スクロールバー幅"単位に変換しています。

上記のコードを明確にするため、該当するマニュアルページを確認することをお勧めします。

よろしく、 Jotham。

+0

私のテキストボックスは動的で、グリフを含めない限りマスクの下に表示されません。ありがとう。 –

+0

これはかなり典型的なフラッシュ動作です。 – Jotham

関連する問題