• 締切済み

座標の移動指定について教えてください

初歩的な質問で申し訳ありませんが、 ボタン操作によって上下にスクロールするループ画像が作りたいです 見える範囲(ステージ)が縦幅300pxなのに対し、(ムービー クリップに設定した) 縦幅500pxの画像と、押すたびに画像を 20pxずつ上と下に動かすための ▲(上用)▼(下用)2つの ボタンを配置します。 ボタンを操作して画像を初期の座標(たとえばy.100)から 上下に動かし、ステージの上端か下端で 画像が見切れそうな 位置(たとえばy.200、もしくはy.0)にまでついた時に元の 位置(y.100)まで戻り、 ループしてるようなflashが作りたいのです。 onClipEvent (load) {   this.my_mc._y = 100; } if (my_mc._y < 0) {  my_mc._y = 100; } else if (my_mc._y < 200) {  my_mc._y = 100; } ↑のように指定しても思うように動いてくれず、困っております どなたかお力をかしてください…お願いします flash CS3のactionscript2で作業しています

  • Flash
  • 回答数3
  • ありがとう数4

みんなの回答

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.3

まず高さ500pxの画像をムービークリップ(以下MCと略)に変換します。 その時に 「基準点」を左上 に設定してMCに変換します。 そしてステージ上のこのMC にインスタンス名を付けますが, ここでは「pic_mc0」というインスタンス名を付けることにします。  ┼──┐←基準点左上の「pic_mc0」  │画像│  │画像│  │画像│  │画像│  └──┘ その「pic_mc0」をさらに 「基準点」を左上 に設定したMCに変換します。 そして「scr_mc」というインスタンス名を付けることにします。  ┼────┐←基準点左上の  │┼──┐│  「pic_mc0」入り「scr_mc」  ││画像││  ││画像││  ││画像││  ││画像││  │└──┘│  └────┘ その「scr_mc」の上や下など,適当な場所に2つのボタンを作成して, scr_mcを上にスライドさせる方のボタンには「up_btn」,下にスライドさせる方のボタンには「down_btn」 というインスタンス名を付けます。 次に「scr_mc」やボタンを配置したレイヤーの上にレイヤーを追加して, そのキーフレームに次のように書きます。 --------------------------- // スライドする速さを設定(※可変) var spd:Number = 20; // 「scr_mc」の初期座標を記録 var base:Number = scr_mc._y; //scr_mc内の 「pic_mc0」を「pic_mc1」という名で複製し // 「pic_mc1」のy座標を「pic_mc0」のすぐ下に配置 // (※これが無限スクロールのミソ) scr_mc.pic_mc0.duplicateMovieClip("pic_mc1", 1); scr_mc.pic_mc1._y = scr_mc.pic_mc0._height; // 「up_btn」プレス時の動作 up_btn.onPress = function():Void { // 「scr_mc」に1フレーム時間ごとに実行する関数を定義 scr_mc.onEnterFrame = function():Void { // spd ずつ座標を上げる this._y -= spd; // もしy座標が「scr_mc」の半分未満になるば if (this._y<base-this._height/2) { // 「scr_mc」の半分下に下げる this._y+=this._height/2; } }; }; // 「up_btn」を放した時の動作 up_btn.onRelease = up_btn.onReleaseOutside=function ():Void { // 「scr_mc」の1フレーム時間ごとに実行する関数を削除 delete scr_mc.onEnterFrame; }; // 「down_btn」プレス時の動作 down_btn.onPress = function():Void { // 「scr_mc」に1フレーム時間ごとに実行する関数を定義 scr_mc.onEnterFrame = function():Void { // spd ずつ座標を下げる this._y += spd; // もし最初のy座標より下に下がれば if (this._y>base) { // 「scr_mc」の半分上に上げる this._y-=this._height/2; } }; }; // 「down_btn」を放した時の動作 down_btn.onRelease = down_btn.onReleaseOutside=function ():Void { // 「scr_mc」の1フレーム時間ごとに実行する関数を削除 delete scr_mc.onEnterFrame; }; --------------------------- > ボタンを操作して画像を初期の座標(たとえばy.100)から上下に動かし、 100 ではなく -100 ではないでしょうか? そもそも y座標 は下方が + ,上方が - ですよ。 Flash に限らず何でもそうです(イラレを除く)。 何にしても初期の座標は画像自体ではなく「scr_mc」の初期配置を -100 などにすれば良いです。

回答No.2

『<200』って 『>200』じゃないです?

  • bbcd
  • ベストアンサー率38% (29/75)
回答No.1

パス指定がうまくいっていないんじゃないでしょうか。 上記のスクリプトはどこに書いていますか? 「my_mc」にthisがついているのとついていないのがあるということは、 書いてある場所が違うということでしょうか。 どこに書いているかで変わってきます。

関連するQ&A

  • Actionscriptで座標指定

    はじめまして。 WinXP・Flash MXの環境で作業しています。 動きとしては、[a_mc]と言うMCがある距離動いたら、B秒止まるというような動きをしていて ボタンにマウスが乗ると指定した座標にスライド移動してMCの動きは止まる。 そしてボタンからマウスが離れたら、静止した場所から再びある距離動いたら、B秒止まるという動きが再開される というものを考えています。 [a_mc]のMC構造は レイヤー1に縦に7枚つなげた画像を配置 レイヤー2の1フレーム目に Y_dif = (Y_Pos-_y)*0.6; _root.Slide._y = Number(Y_dif)+Number(_y); と言うアクションを配置。 2フレーム目にgotoAndPlay(1);のアクションが配置してあります。 シーン1にの レイヤー1に[a_mc]のMCを配置。インスタンス名はSlideにしています。 レイヤー2にはボタンが7つ配置してあります。 [a_mc]のMCにアクションは onClipEvent (load) { function replace() { if (_y>=-1680) { _y = _y-2; } else if (_y<-1680) { _y = 0; } } } onClipEvent (enterFrame) { replace(); } と入れているのですが、何秒間止まるなどの入れ方がうまく分かりません。 (※getTimerなど使うのかななど色々試しているのですが…) ボタンのアクションは on (rollover) { _root.Slide.Y_Pos = 4; } on(rollOut){ _root.Slide.replace(); } としているのですが、ピクっと動いてすぐ止まってしまいます。 現状このような感じになっています。 ムービーのスクロールをB秒止める方法とrolloutすると続きがスクロールする方法はどうやるのでしょうか? 長々と申し訳ありませんが宜しくお願い致します。

    • ベストアンサー
    • Flash
  • Flashでの座標指定におけるボタン有効化

    よろしくお願いします。 現在、FLASHでゲームを作成中です。 バージョンはFLASH CS4です。 ASは2.0です。 ボタンが配置されており、更にムービークリップ(以下mc)があります。 ボタンは初めクリックできないようにしておきます(マウスに反応しない)。 mcを十字キーで移動させ、ある座標内(10<=x<=50、10<=y<=50)に入ったとき、 初めてボタンをクリックできるようにするためにはどのようにASを記述すればよいでしょうか? ifでmcが座標内に入っていたら、ボタンをenabled=trueにする感じでしょうか? ご回答よろしくお願いします。

    • ベストアンサー
    • 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から離れないという様になってしまうのですがどうすればいいでしょうか??

  • MCの~秒後に移動

    winXP flash ver8 を使用しています。 あるMCに下記のスクリプトで任意の箇所に移動するということをしていますが、これを30秒後とかに移動させるということは可能でしょうか。 よろしくお願いいたします。 onClipEvent (load) { targetX = 550; targetY = 30; } onClipEvent (enterFrame) { _x += (targetX-_x)/5; _y += (targetY-_y)/5; }

    • ベストアンサー
    • Flash
  • スライドバーのアクションスクリプト

    いつも大変お世話になっております。 伸び縮むサイドバーを作っているのですが、伸ばしたまではいいのですが、元の位置に戻すほうがどうもうまくいきません。 以下、途中まで書いたスクリプトです。 ■.recruit_mcがバーの部分になります。 onClipEvent (load) { _root.recruit_mc._x = 859; _root.recruit_mc._y = 272; } onClipEvent (enterFrame) { rec_to_button.onRelease = function() { _root.recruit_mc.onEnterFrame = function() { if (_root.recruit_mc._x>=620) { _root.recruit_mc._x -= 10; } }; }; } -------------------------------------------------------------- if (_root.recruit_mc._x>=620) { _root.recruit_mc._x -= 10; } の箇所で else を使って、逆の場合をいろいろと書いているのですが どうもうまくいきません。 ボタンを押したら859→620まで移動、またボタンを押したら620→859 まで移動するようにするには、あとどう書き加えればいいですか? ご教授よろしくお願いします。

    • ベストアンサー
    • Flash
  • 画像の無限スクロールについて

    FLASH初心者です。 いろいろ探しましたが、上手くいかず、わからないのでアドバイスお願いします。 ページが読み込まれると同時に、画像が下から上に向かう無限スクロールをさせたく、いろいろやってみましたが、どうしても途切れて空白になる時間が出来てしまったり、繋ぎがスムーズにいかなかったりします。 画像は縦62pxが1つ、縦82pxが4つの2セットをグループ化し、625.4pxとなっています。 ソースは、ホームページで検索したのを参照しました。 ↓ onClipEvent(enterFrame) { this._y -= 3;; if(this.getBounds(_root).yMax < 0) { this._y += 625.4;; } } なにとぞ宜しくお願いします。

    • ベストアンサー
    • Flash
  • 下からスライドしてくるメッセージ

    こんにちは。 フラッシュ初心者です。画面下に、タブを出しておいてマウスオーバーすると上にスライドしてメッセージが出るというものを作っているんですが、位置の指定がうまくいきません。 もともと横にスライドするサンプルを見つけまして、縦に動くようにカスタマイズしているのですが…。 最初の位置の指定はできました。動きも縦になったのですが上に行き過ぎてしまうのです…。 メッセージ枠の幅だけ上に上がるようにするか、または上から○pxのところまで上がるように指定したいのですが、この場合どうすればよいのでしょうか? ↓今、こんな感じで作ってます。ステージはw400px×H200pxです。 onClipEvent (load) { this._y = 180; } onClipEvent (enterFrame) { if (this.hitTest(_root._xmouse,_root._ymouse,1)) { this._y -= (this._height-this._y)/_root.speed; } else { this._y += (180-this._y)/_root.speed; } }

    • ベストアンサー
    • Flash
  • ボタンによるムービークリップ移動

    flashmx2004/actionscript2.0です。 ボタンにrollOverすると、別の場所にあるムービークリップが所定の位置まで移動する、と言う動きをさせたいと思っています。 ムービークリップがMC1としますと、単純にボタンに MC1._x=0; MC1._y=0; と指定したらその位置に移動はしますが、これのように瞬時に移動ではなく、動きがわかる程度のスピードで動くようにしたいのです。 イメージとしましては画像の上にシャッターのように次の画像が来る形にしたいのです。 フレームをあまり使わず、可能であればボタン1個で動作させたいのですが、どうにも手詰まりです。 ご教授戴ければ幸いです。

    • ベストアンサー
    • Flash
  • ActonScriptでムービークリップの移動

    お世話になります。 a_mc b_mc の2つのムービークリップがあり、 +-のボタンを押すとそれぞれ左右に130pxずつ動くようにスクリプトを記述しています。 (例) on (release) { a_mc._x -=130; b_mc._x -=130; } とか on (release) { b_mc._x -=130; } a_mc、b_mcは一緒にも個別にも移動できるようにしております。 a_mc、b_mcどちらも動くようにして、なおかつボタンを設けてそれを押せばb_mcをどんなに移動させていても 1クリックでa_mcの位置に戻るようにさせたいのですが、どうやったら出来るのか分かりません。 Point.clone()とか使えばいいのかと思ったのですが、a_mcの座標位置が変わるとうまく動きません。 分かりにくい説明で申し訳ないのですが、本当に困っています。 初心者なので分かりやすく説明していただけるとありがたいです。 どうぞ宜しくお願いいたします。 環境: WindowsXP、Flash Professional 8

    • ベストアンサー
    • Flash
  • flashのMCの中にMCを入れてその中のボタンでシーンを移動したいのですができません

    flashの シーン1で大元になる5つのMCで構成された大元のMCにはonClipEvent (enterFrame)のスクリプトを記述しています。 その5つのMCの中、それぞれに、ボタンがあります。そのボタンはシーン1からシーン2に飛ばすアクションをつけているのですが、まったく反応しません。 なぜか、同一シーンのフレーム移動は反応するのですが。ボタンの記述は下記です。 on (release) { _parent._parent.gotoAndPlay("work", 1);

    • ベストアンサー
    • Flash

専門家に質問してみよう