- ベストアンサー
スライドバーを使って画像を変える
- FLASHでスライドバーを使用して画像を切り替える方法について質問します。
- スライドバーAとBを用いて、値の変化に応じて異なる画像を表示するFLASHを作りたいです。
- スライドバーの値を取得できるようになったが、画像の表示方法が分からないので質問します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
こうでなきゃダメ(またはコレです)という方法はありませんよ。 知っている限りで柔軟に考えるのが一番だと思います。 そして,その方法で何か不満があれば, それ以外にもっとスマートで,目的に合った方法を探してみるのも良いですね。 とりあえず初歩的な方法として, Flash は元々インタラクティブにフレーム移動(時間軸移動)できるアニメーションソフトです。 それを有効利用するのが,最初に思い付くべき方法だと思います。 例えば, _root(メインムービーのタイムライン) にある変数 my_var に, "4-8" という値を得た場合, つまり,_root にある 変数 my_var が, my_var = "4-8"; になった場合, 画像4-8を表示させるためのボタンに, -------------------------------------- on (release) { _root.gotoAndStop(_root.my_var); } -------------------------------------- と書けば, _root の フレーム は 4-8 というフレームラベルの付いたフレームにジャンプします。 フレームのラベル名 4-8 のフレームに 画像4-8 を置いておけば, 画像4-8 が表示されます。 「gotoAndStop();とgotoAndplay();を覚えよう。」 http://www.1art.jp/flash/le/lesson14/lesson14.htm 「フレームラベル」 http://www.1art.jp/flash/le/lesson17/lesson17.htm 上記2ページのようにアニメーションを作成するという意味ではありませんよ。 アニメーションさせるのではなくて, 各フレームをキーフレームにして, それぞれに違う画像を用意しておいて, そのフレームに gotoAndStop() で,ジャンプさせるということです。 タイムラインを図示すると次のような感じです。 □ レイヤー 筆・・|●///////////[]| ←スライドバー □ レイヤー 筆・・|●|●|●|●| ~|●| ←画像 フレーム1 には this.stop(); そして, gotoAndStop(フレームラベルの変数名); ということです。 // ==================== _root のフレームを前後に動かすのが嫌であれば, 毎フレームごとに違う画像を置いたムービークリップを作成して, そのムービークリップのタイムラインを "4-8" に進ませれば良いわけです。 仮にそのムービークリップのインスタンス名を my_mc にでもして置いたとすると, 画像4-8を表示させるためのボタンに, -------------------------------------- on (release) { _root.my_mc.gotoAndStop(_root.my_var); } -------------------------------------- と書けば, _root にあるムービークリップ my_mc の フレーム は, 4-8 というフレームラベルの付いたフレームにジャンプします。 最初に書いた方法のムービークリップ使用版です。 // ==================== とにかく,いくらでも方法はあります。 画像はステージ上に用意しておくのではなく, いったんムービークリップに変換してライブラリの中だけに置いておいて, そのライブラリのムービークリップにリンケージから識別子を付けて, MovieClip.attachMovie でステージ上に呼びだす方法もあります↓。 「リンケージとは?」 http://www.1art.jp/flash/le/lessona/lessona.htm その場合のスクリプトは次のような感じになると思います。 -------------------------------------- on (release) { _root.attachMovie(_root.my_var, "gazou", 0, {_x:200, _y:100}); } -------------------------------------- // ==================== また,最近多いのが, 上記 3 つの方法のように画像を Flash 内に入れておくのではなく, 外部 JPEG ファイルにして,それをロードする方法です。 Flash ヘルプ より, loadMovie (MovieClip.loadMovie メソッド) http://livedocs.macromedia.com/flash/8_jp/main/00002479.html その他 Google検索:「loadMovie jpg」 http://www.google.co.jp/search?hl=ja&q=loadMovie+jpg&lr=lang_ja この MovieClip.loadMovie を使う場合, 外部画像を, 1-1.jpg,1-2.jpg,,1-3.jpg,… ,4-8.jpg, … というファイル名で保存し, それをロード表示させるムービークリップを1つ作成して, そのムービークリップにインスタンス名 my_mc を付けた場合, ボタンに書くスクリプトは次のような感じになると思います。 -------------------------------------- on (release) { _root.my_mc.loadMovie(_root.my_var+".jpg"); } -------------------------------------- // ==================== とにかく書きだすときりがありませんが, 画像をムービークリップに変換して, そのムービークリップの x座標,y座標プロパティ を変えても良いです。 また, そのムービークリップの _visibleプロパティ を変えて表示・非表示を切りかえても良いです。 また, … … きりがないのでこの辺で...。
お礼
sassakunさん、早速の回答ありがとうございました。 参考のリンクを見てフレームラベルを使った方法でなんとかやってみようと思い、今日一日かかってやっと完成できそうな感じになってきました! それにしても、こんなに沢山の方法があるなんてFLASHというのは本当に奥が深いんですね。まだまだこれから勉強したいと思います。sassakunさん、本当にありがとうございました!