- 締切済み
マウスカーソルに応じた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が重なったりしてます。 なぜ、このような現象になってしまうのでしょうか?
- みんなの回答 (1)
- 専門家の回答
みんなの回答
どんな感じにしてみたいのかが,はっきりとはわかりませんので不十分な回答になると思います。 最後から5行目 } else if(_parent._x < -halfwidth){ の行は,_parent が不要で } else if (_x<-halfwidth) { ではないでしょうか? 一応動きを確認してみましたが,ここを修正すると,ループはしますし,MCどうしの間隔も変にはなりません。 あと,確認ですが >> menu.mcというのがあり、… 「menu.mc」などがインスタンス名ではないですよね。 mcであることを,この説明で強調するために「.mc」を付けられているのですよね。 それと,7行目 if (_root._xmouse<=180 || (_root._xmouse>250) && (_root._xmouse<=429)) ここの書き方が少し変ですが, if (_root._xmouse<=180 || _root._xmouse>250) { の間違いではないでしょうか? 別に元のままでも良いのですが, 元のままだと動きが左右で違うようになるので,ひょっとしたら間違いかもしれないと思って,書かせていただきました。
補足
えーと、ごめんなさい。 まず「menu.mc」っていうのは、「menu_mc」です。 インスタンス名です。 ループ処理なんですが、やはり上手くいきませんでした。 でも個々のmenu全体をムービークリップで包むのをやめてバラバラの状態でroot階層に置いたら、ループするようになりました。 ただ、それでも位置ずれが起きちゃうんですよね。 ちょっともうちょっと色々やってみます。