D0407231 マウスの動きにあわせて背景画像を移動させるには?
Name savoy
Date 2004年07月23日 (金) 18時37分
Message こんにちは、お忙しい中非常に心苦しいですがまた質問させて下さい。
http://www.sonyclassics.com/goodbye/flash.html
↑このサイトのような、背景をマウスにあわせて移動させる方法はどのようにしたらようのやら頭を抱えております。過去記事を読み返してみましたが、スライドさせる方法に近いのか、スムーズメニューの回と近いのか、どうにもこうにも分かりません。
アドバイスをいただければと思います。宜しくお願い致します。
Response 01
2004年07月24日 (土) 00時19分> 憲ちゃん 
こんばんわ、savoyさん(^^)

マウスの位置によって背景が移動するのは・・・
過去記事の■虫眼鏡のレンズなし・・・
つまりレンズの中の拡大画像だけの動きと同じです♪


bg_slider00.fla

サンプルは、ムービー(ドキュメント)の大きさは「300×200」で、
背景画像の大きさが「400×450」という設定です。
背景画像は左上端を基準点とするMCにして、
それをムービーの座標の原点(0,0)である左上端にぴったり合わせて配置します。



図の@がそのときの説明で、マウスの座標がムービーの左上原点にあるときの状態です。
マウスをムービーの右下に移動したとき、背景画像BGをムービーの端一杯まで移動させるとすれば、
図のAのようになり、そのときの背景画像BGの基準点の座標は「x=-100,y=-250」になります。
したがって・・・
マウスの座標から各々背景画像BGの座標を求める関係式は、図のしたのようなことになります。
アクションスクリプトを、背景画像(サンプルでは「BG」MC)に記載するとすれば、
自分自身のXY座標(this._x this._y)をマウスのXY座標(_root._xmouse _root._ymouse)と
関連付ければよいので・・・

 onClipEvent (enterFrame) { フレームレート(1/12秒)ごとに以下を繰り返す
   this._x = _root._xmouse * -100 / 300;
   this._y = _root._ymouse * -250 / 200;
 }

とクリップアクションで記載します。
ただ、これでは直接過ぎてマウスの動きそのままに背景画像が動きますので、これに・・・
マウスの座標を目標値とする「目標値接近の方程式」を組み合わせて、

 onClipEvent (enterFrame) {
   this._x += ( _root._xmouse * -100/300 - this._x )/10
   this._y += ( _root._ymouse * -250/200 - this._y )/10
 }

このようにします。「目標値接近の方程式」について詳しくは
■第6回 回転のメカニズムの”630”を参照していただくとして・・・
上記式の末尾の「10」は接近スピードの調整値で、
この値が小さいほど速く、大きいほど遅く目標値(上記青字部分)に接近してきます。
適当に数値を変えて試してください。

マウスのポップアップは、■マウスオーバーでポップアップメッセージを参照してください。

このページの先頭へ