• 締切済み

Flash マウスの位置で速さの変わるスクロールメニュー

Flashでスクロールメニューを作成したいのですが、うまくいきません。 ボタンを羅列しムービークリップにし、 onClipEvent (load) { Min = -80*15; speed = 20; } onClipEvent (enterFrame) { if (_parent.mask.hitTest(_root._xmouse,_root._ymouse,0)) { this._x -= _parent.mask._xmouse/speed; if (this._x >0) { this._x += Min; } else if (this._x < Min) { this._x -= Min ; } } } 上記のスプリクトを記述することで動かすことには成功しました。 しかし上記スプリクトでは、ドキュメントサイズ内では、メニューにマウスオーバーしないと制止してしまいます。 http://www.sophia-eternal.com/ 上記サイトの様に、読み込んだ時から常にゆっくりスクロールし、 マウスオーバーした時にのみ動きの速さを変えるにはどのようなスプリクトを追加すればよろしいでしょうか? メニューのみのFlashファイルを作成し、HTMLで組み立てれば早いのですが、 デザイン上、ページ全体を1つのFlashファイルで作成するしかありません。 メニューが常にスクロールしていて、マウスオーバーした時にのみ動きの速さが変わる様にしたいのです。 宜しくお願い致します。

  • Flash
  • 回答数1
  • ありがとう数0

みんなの回答

回答No.1

楽しそうなので作ってみました。 以下のような物はいかがでしょうか。 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓 speed = 5; return_x = -330; function movePict() { var x = a1_mc._x; if (x < return_x) { a1_mc._x = 0; } else if( x > 0) { a1_mc._x = return_x; } else { a1_mc._x -= speed; } } function changeSpeed() { x = a2_mc._xmouse; w = a2_mc._width; speed = (x - w / 2) * 0.2; } a2_mc.onRollOver = changeSpeed; a2_mc.onMouseMove = changeSpeed; this.onEnterFrame = movePict; 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

jun333
質問者

補足

ご回答いただき、ありがとうございます! しかし私に専門知識がないため、上手く動作できませんでした、、、 ご回答いただいたスプリクトですとonClipEvent ハンドラ内にとのエラーが出るので、 onClipEvent (load) { speed = 5; return_x = -330; function movePict() { var x = a1_mc._x; if (x < return_x) { a1_mc._x = 0; } else if( x > 0) { a1_mc._x = return_x; } else { a1_mc._x -= speed; } } function changeSpeed() { x = a2_mc._xmouse; w = a2_mc._width; speed = (x - w / 2) * 0.2; } a2_mc.onRollOver = changeSpeed; a2_mc.onMouseMove = changeSpeed; this.onEnterFrame = movePict; } にしましたが動作しません... 宜しければ詳しく教えていただけませんでしょうか? 宜しくお願い致します。

関連するQ&A

  • マウスカーソルに応じたmcのスクロール(ループ型)

    マウスカーソルに応じて、複数配置してるmcがカーソルに合わせてスクロールして、ステージからはみ出したら、はみ出した側のステージの反対から出てくるっていうscriptを作ったのですが、うまくいきません。ループしてくれないんです。 ---- _root ---------------------- menu.mcというのがあり、そのmcの中にmenu01.mc、menu02.mc、menu03.mc・・・という感じでmcが配置してあります。menu.mc自体に別のスクリプト掛けてるので、こういう形にしてます。 ---- _root>menumc ---------------------- menu01.mcなどそれぞれのmenuのmcが入ってます。 さらに、それぞれのmcの中にscroll.mcというのをおき、そのscroll.mcにscriptが書いてあります。 ---- _root>menu.mc>menu01.mc 内scroll.mcのscript------ _visible = false; center = Stage.width/2; halfWidth = _parent._width/2; this.onEnterFrame = function() {  with(_parent){  //Scroll Speed   if (_root._xmouse<=180 || (_root._xmouse>250) && (_root._xmouse<=429)) {    moveX = (center-_root._xmouse)/15;   }else if(_root._xmouse>180 && _root._xmouse<=250){    moveX = 0;   }   _x = _x+moveX;   //Return Scroll   if(_x > Stage.width+halfWidth){    _x -= _width+Stage.width;   }else if(_parent._x < -halfwidth){    _x += _width+Stage.width;   }  } }; --------------------- で、これだときちんと思ったような動きでスクロールはするんですが、ただループしてくれないんです。しかもスクロールする毎にそれぞれのmcの間隔がずれてる気がします。最悪の場合だと、mcの上に別のmcが重なったりしてます。 なぜ、このような現象になってしまうのでしょうか?

  • FLASH ロールオーバーでプルダウンメニュー

    FLASHを勉強中3週目です。 アイコンにマウス、(マウスオーバー)を置くと、ロールオーバーでプルダウンメニューが出るようにし、そのメニューからそれぞれのURLにリンクようなサイトを考えています。 下記のChapter11 メニュー・フォーム:11-01 ロールオーバーでプルダウンメニューを表示を参考にしています。 http://book.mycom.co.jp/support/e5/actionscript10/ 画像を作成しするところまでなんとか出来ましたが、スクリプトがわかりません。 上記のサイトでは onClipEvent (load) { this.Stop(); } onClipEvent (enterFrame) { hitTop = this.hitTest(_root._xmouse, _root._ymouse, true); if (hitTop) { this.gotoAndStop("on"); } else { this.gotoAndStop("off"); } } と書かれていますが、urlにリンクをするまでの説明がありません。 初心者用のFLASHのマニュアルを2冊ほど買って勉強していますが、上記のようなスクリプトが載っていないので、WEBで調べながら勉強をしています。 プルダウンメニューのスクリプトで、リンクまでを説明しているサイトがあれば、ご教授ください。 どうぞよろしくお願いします。

  • Flashで、ナビゲーションがマウスカーソルに追従し、カーソルに近づくと止まるボタン

    FlashのActionScriptについての質問です。 参考書を見ながらやっていて、 ナビゲーションがマウスカーソルに追従し、カーソルに近づくと止まるボタンを作りたいのですが、 マウスに追従してきません。 _rootタイムラインのムービークリップctr_mcsetに、 onClipEvent (enterFrame) { if (_root.woksctr == true) { this._x += (_parent._xmouse-this._x)/5; this._y += (_parent._ymouse-this._y)/5; } } を記述しました。 ctr_mcsetのタイムラインに、触れると追従が止まるボタンの領域として、 cl_bn02を配置して、クリッカブル表示されないように on (release) { } onClipEvent (load) { this.useHandCursor = false; } を記述しました。 その、cl_bn02のタイムラインに、_up,_over,_downラベルをつくり、 _upには、 stop(); this.hitArea = hit; this.hit._visible = false; _root.worksctr = true; _over,_downには、 _root.worksctr = false; と記述しました。 参考書の通りだと、これでマウスカーソルにナビゲーションが近づくと静止し、 離れると追従するらしいのですが、止まったまま追従してきません。 if (_root.woksctr == true)の、==を、=だけにすると、追従はしてきますが、 ムービークリップの中心点にマウスカーソルがいつもいってしまって、 左右のボタンがうまく押せません。 どこか記述がヘンなのでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 格納式の動くメニューとヒット領域判定について

    ロゴをさわると格納されていたメニューがモーションを伴いながらでて、そのまま消えずに維持、一定以上左のエリアにいってしまうとメニューが消えるメニューを作りたいと思っています。 http://fashion.dior.com/dior.html イメージとしてはこちらのどれかリンクを選んでいただいて各コンテンツを表示させるメニューをクリックした時の動きが近いです。 格納→維持→エリア外にいくと消えるしくみまではなんとか作れたのですが、不思議なことにメニューが現れるときにモーションをともなわず、最後のフレームだけが再生されるようになってしまいました。 なお、ロゴには下記のスクリプトをつけました。 ヒットテストにしていないのはその後も条件をつけるためにはヒットテストだとできない?かなと思ったからです。 onClipEvent (mouseMove) { if (this._parent._xmouse>749.6 && this._parent._xmouse<966.6 && this._parent._ymouse<228.6 && this._parent._ymouse>28.6) { this._parent.menu.gotoAndPlay(2); } else if (this._parent._xmouse<698.9) { this._parent.menu.gotoAndStop(1); } else { this._parent.menu.gotoAndStop(7); } } 表示させるメニューのムービークリップ(menu)には onClipEvent (mouseMove) { if (this._parent._xmouse>698.9) { this.gotoAndStop(7); } else if (this._parent._xmouse<698.9) { this.gotoAndStop(1); } } と書きました。 かなり無理矢理なスクリプトだと思いますがご教授お願いします。! ちなみに制作環境はflashMX2004です。

  • マウス 追従 範囲外

    マウスを追いかけるMCを以下のように設定しましたが、 MCが動いている範囲外にマウスがいるときは追いかけるのを やめにしたい場合どのように記述すればよろしいでしょうか。  onClipEvent (mouseMove) { if (_root._xmouse >左 && _root._xmouse <右) { this._x = _root._xmouse; } if (_root._ymouse >上&& _root._ymouse <下) { this._y = _root._ymouse; } } 範囲外にマウスがいるときは定位置にmcを表示させるか、 表示を消したいです。 ちなみにmcが動く範囲の指定方法はネット上から探してきました。 別の方法でもっと適した記述があれば教えてください。

  • [Flash]スクロールメニューのボタンからフレームに移動したいのですが

    Flashほぼ初心者です。 FLASH FACTORYという本を参考に、FlashでPhotoギャラリーを作ろうとしています。 この本の2-6の項目を参考にしているのですが、 メニューのボタンを押しても、フレームに移動することが出来ません。 getURLをthis.gotoAndPlayに変えただけなのですが、だめです。 どなたか、アドバイスお願い致します。 【変更前】 on (press) { _parent.drag = 1; _parent.startY = _root._ymouse; _parent.startSlideY = _parent._y; } on (release, releaseOutside) { _parent.drag = 0; _parent.endY = _root._ymouse; if ((_parent.startY == _parent.endY) && (url != null)) { getURL(url); } } 【変更後】 on (press) { _parent.drag = 1; _parent.startY = _root._ymouse; _parent.startSlideY = _parent._y; } on (release, releaseOutside) { _parent.drag = 0; _parent.endY = _root._ymouse; if ((_parent.startY == _parent.endY) && (url != null)) { this.gotoAndPlay(url); } }

    • ベストアンサー
    • Flash
  • 移動範囲を指定したい

    マウスを追いかけるMC1の追いかける範囲を指定したいのですがうまくいきません; 細かい指定としては↓ (1)画面の下1/5ぐらいのMC2の中にはMC1は入れない (2)マウスがMC2の中にある時はMC1はy座標は変化なし x座標はマウスを追いかける(つまり、横にしか動かない) (3)マウスがMC2から出てきたら、再びMC1はマウスを追いかける 現状としては ------------------------------------------- onClipEvent (enterFrame) { if (this.hitTest(_root.ki.kusa)){ _x += (_parent._xmouse-_x)*0.1; this._y += 0; }else{ _x += (_parent._xmouse-_x)*0.1; _y += (_parent._ymouse-_y)*0.1; } } ------------------------------------------- これでは、マウスがMC2から出てきた時に、MC1がMC2から離れないという様になってしまうのですがどうすればいいでしょうか??

  • Flashでのマウスの位置に合わせてスクロール。

    作業環境 PC : Windows7 Flash : Flash8 Actionscript : 2.0 困っています。 Flashの制作でマウスの位置に反応して左右にスクロールするのもを作りたいのですが、マウスに反応はしてくれても、画像のループ処理がうまくいかず、画像が途切れてしまいます。 ■参考にしているサイト http://acchan.s55.xrea.com/flash/scroll_menu/0501/scroll_menu0501b.html 僕が作ろうとしている状況は、下記の通りです。 ・ステージサイズ1160pxで、高さは223px ・スクロールする画像の全体での長さは3240px ・スクロールする画像は各ボタンになっていて、180pxが18個並んでいます。 理想としては、マウスの位置に合わせて、画像が両サイドに永久ループし、マウスオーバーしている画像は、その画像のリンク先に飛ばせるようにしたいのです。 どうかお力おお貸しください。 宜しくお願い致します。

    • ベストアンサー
    • Flash
  • ムービークリップがマウスカーソルを追いかけ、マウスカーソルと同じ位置に来たときにムービークリップを変えたい

    以下のようにスクリプトを書いたのですが ムービークリップがマウスカーソルと同じ位置に来ても ムービークリップがフレーム2に移動しません。 ドラゴンクエストVIIIのトップページのFlashのような 表現をしたいのですがうまくいきません。 http://www.square-enix.co.jp/dragonquest/eight/ _mc.onEnterFrame = function() { this._x += ( _root._xmouse - this._x ) / 5; if( this._x == _root._xmouse ) this._mc.gotoAndStop(2); else this._mc.gotoAndStop(1); }; どうすればこの問題を解決することができるのでしょうか。 ご存知の方がおられましたらご回答をよろしくお願いします。

    • ベストアンサー
    • Flash
  • Flashスクリプト

    マウスで画面がスクロールするというものをダウンロードして画面サイズとスクロールスピードを変更し使いたいと思っているんですが、スクリプトがわからず数値をどう変えたらよいかわかりません。 わかりにくいと思うんでますが、どの値が何を動かしているのかわかれば結構です。教えてください。 ◆alp = getProperty("/photo",_alpha)  if (alp>=100) { setProperty("/photo",_alpha,100);  }  setProperty("/photo",_alpha,alp+10); ◆cursorpos_x = _root._xmouse;  cursorpos_y = _root._ymouse;  if (_root._xmouse >0 && _root._xmouse < 150) { pos = getProperty("/photo",_x)+5; if (pos < 240) { setProperty("/photo",_x,pos);  }  }  if (_root._xmouse > 250 && _root._xmouse <    400) { pos = getProperty("/photo",_x)-5; if(pos > -240) { setProperty("/photo",_x,pos);  }  } ◆alp = getProperty("/photo",_alpha)  if (alp<40) { setProperty("/photo",_alpha,40);  }  setProperty("/photo",_alpha,alp-10);

    • ベストアンサー
    • Flash

専門家に質問してみよう