- ベストアンサー
Flashでのマウスの位置に合わせてスクロールする方法
- Flashの制作でマウスの位置に反応して左右にスクロールする機能を作成したい。画像のループ処理がうまくいかず、画像が途切れてしまう課題がある。
- ステージサイズは1160pxで、高さは223px。スクロールする画像は全体で3240pxの長さで、180pxのボタンが18個並んでいる。
- 理想的には、マウスの位置に合わせて画像が両サイドに永久ループし、マウスオーバーしている画像はリンク先に飛べるようにしたい。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ステージサイズを1160pxに変更し, 作るボタンの数を18個にしただけで その他はほとんど変えないままで 実際にサンプルの「scroll_menu_0501b.fla」の通りに作ってみたところ スクリプトの編集などはなしで全く無事にループ動作しましたよ。 何の応用力も工夫も必要ありません。 サンプル自体が "質問の答えそのまんま" だと思います。 う~~ん...困りましたね。 ご質問は「サンプルの通りを "そのまんま" を作ることもできない」という意味なのでしょうか? 仮に18個の画像にA~Rという名を付けたとするなら まずはそれらを入れたボタンを18個用意しますよね。 「A」「B」「C」…「R」 そしてそれらのボタンをまとめてムービークリップに変換しますよね? 「ABC…R」 そのムービークリップを3つ横に並べて配置し↓ 「ABC…R」「ABC…R」「ABC…R」 それらをさらにまとめて左上を基準点とした1つのムービークリップにします↓。 「ABC…RABC…RABC…R」 入れ子構造も図示すると次のようになるでしょうか。 『「ABC…R」「ABC…R」「ABC…R」』 その長いムービークリップ内の 真ん中の「A」の右端をステージの左端の位置に合わせるようにして配置し その長いムービークリップ自体に サンプルの「scroll_menu_0501b.fla」の「slideBar」レイヤーに置いてあるムービークリップの スクリプト↓をそのままコピペすれば良いだけです。 onClipEvent (load) { speed = 0.01; defX = this._x; rightSide = (this._width/3*2)*-1; } onClipEvent (enterFrame) { speed = (speed*0.7)+((_root._xmouse-300)*0.01); this._x -= speed; if (this._x>=0 || this._x<=rightSide) { this._x = defX; } } なおサンプルのスクリプトのままだと 左右のスピード変化が対象になっていません。 speed = (speed*0.7)+((_root._xmouse-300)*0.01); の部分を speed = (speed*0.7)+((_root._xmouse-Stage.width/2)*0.01); とした方が感じが良いと思います。 ("感じ" だけの問題でループするしないとは別問題です。) 「リンク先に飛ばせる」ことだけに関しては 全くそのまんまではありませんが 元のサンプルがほぼそのままが利用できます。 最初の画像はボタンにしてあるわけですから その各ボタンに on (release) { getURL("○○.html"); } のように書いて行けば良いだけです。 「getURL();を覚えよう。 」 http://www.1art.jp/flash/le/lesson20/lesson20.htm ステージ幅を 1160px 高さ223px にして 私が実際に作ってみているところ↓。 とにかく何の問題もなくそのまんまで動きました。
お礼
アドバイス頂き本当にありがとうございます。 僕も質問をした後に何度もいじっているうちにループさせる事が出来ました。 BlurFiltanさんいつも丁寧なアドバイスをありがとうございます。 また何かわからない事があった時は宜しくお願いします。