質問: 作業環境 PC : Windows7 Flash : Flash8 Actionscript : 2.0 困っています。 Flashの制作でマウスの位置に反応して左右にスクロールするのもを作りたいのですが、マウスに反応はしてくれても、画像のループ処理がうまくいかず、画像が途切れてしまいます。 ■参考にしているサイト 僕が作ろうとしている状況は、下記の通りです。 ・ステージサイズ1160pxで、高さは223px ・スクロールする画像の全体での長さは3240px ・スクロールする画像は各ボタンになっていて、180pxが18個並んでいます。 理想としては、マウスの位置に合わせて、画像が両サイドに永久ループし、マウスオーバーしている画像は、その画像のリンク先に飛ばせるようにしたいのです。 どうかお力おお貸しください。 宜しくお願い致します。
回答: ステージサイズを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();を覚えよう。 」 ステージ幅を 1160px 高さ223px にして 私が実際に作ってみているところ↓。 とにかく何の問題もなくそのまんまで動きました。 ! 画像をクリックしてイメージを拡大