• 締切済み

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

初歩的な質問で申し訳ありませんが、 ボタン操作によって上下にスクロールするループ画像が作りたいです 見える範囲(ステージ)が縦幅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で作業しています

みんなの回答

  • 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