- ベストアンサー
_x,_y指定の移動の方法(Flash lite1.0)
- MCが画面いっぱい、左右に繰り返し移動する方法を求めています。
- 左に移動したら右に戻る動作や、右端から左端に移動して下に移動する動作が可能かどうか知りたいです。
- ステージの大きさは240×240で、MCは15×15と15×14の二種類あります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
まず,考え方としては, _x += (1)*移動距離 ↓ 端まで来たら ↓ _x += (-1)*移動距離 ↓ 端まで来たら ↓ _x += (1)*移動距離 ↓ 端まで来たら ↓ _x += (-1)*移動距離 ↓ … という感じで, 1 と -1 を入れ替えればいいわけです。 次に,具体的な方法です。 15×15のMCはでも良いですし, 15×14のMCはでも良いです。 どちらでも良いので, MC 内のフレームを 3フレームにします。 そして, スクリプト用レイヤーを用意し,3フレーム目を空白キーフレームにします。 □ レイヤー 筆・・|○ []|○| ←スクリプト □ レイヤー 筆・・|●//// | ←何か物 そして, MC 内タイムラインの 「フレーム1」 で, 次のような変数に定数を設定しておきます。 ------------------------------- // 切り替えのための変数 flg の初期値 flg = 1; // スピードの設定 (※可変) spd = 8; ------------------------------- 「フレーム2」には何も書きません。 そして,「フレーム3」に次のように書けば,できあがりです。 ------------------------------- // x座標を spd ずつ加算or減算 _x += flg*spd; // x座標が「ステージの幅-このMCの幅/2」になれば if (_x>=-_width/2+240) { // x座標を「ステージの幅-このMCの幅/2」で固定 _x = -_width/2+240; // y座標を高さ分下へ _y += _height; // そしてフラグの符号を変える flg *= -1; // // x座標が「このMCの幅/2」になれば } else if (_x<=_width/2) { // x座標を「このMCの幅/2」で固定 _x = _width/2; // y座標を高さ分下へ _y += _height; // そしてフラグの符号を変える flg *= -1; } // // このMC内を フレーム2 に戻して Play gotoAndPlay(2); ------------------------------- 2つ MC がありますが, どちらとも同じ構造とスクリプトで行けます。
その他の回答 (1)
#1です。 > これはMCがx座標の0に配置されていないと正常に動かない様ですね。 そんなことはないと思いますが。 ステージに見えている範囲に置いてくださればどこでもOKだと思いますよ。 ただ, 最初に進む向きに関しては, // 切り替えのための変数 flg の初期値 flg = 1; をこのままか, 場合によっては -1 に変えてください。 最初に右に進みたい場合が 1 で, 最初に左に進みたい場合が -1 です。
お礼
なるほど!! flgの値を変えたら正常に動きました。 お手数をおかけして申し訳ございませんでした。 非常に勉強になりました!ありがとうございました。
補足
早々のご返答ありがとうございます! 動きをつけるコトが出来ました。 でも、これはMCがx座標の0に配置されていないと正常に動かない様ですね。 0ではなく例えば20など他の位置にしたい場合は どのように変えれば良いでしょうか? 宜しくお願いいたします。