質問: 10; } // //このMCのx座標をspeedだけ右に移動 this._x += speed; // //もしこのMCのx座標が 0 より大きくなれば if (this._x > 0) { //このMCの横幅の半分だけ左に移動 this._x -= this._width / 2; } } と入力いたしました。 上記のように左から右にスクロールさせるのと同時に右から左ににスクロールさせる方法が知りたいのです。どうかよろしくお願いいたしします。 イメージは下記のような感じで上(左→右)下(右→左)を最初早くスクロールしてだんだんゆっくりスクロールしていくといったアニメーションにすることが理想です。 バージョンはFlashCS4 でas2.0で作成します。
回答: ご質問内容は ActionScript と言うよりも 「考えるべきこと」 です。 逆に言えば ActionScript をいくら知っていても「考えなければできない」という内容です。 ですからここはじっくりと考えてみましよう。 まず ご質問で書かれていらっしゃる前回のスクリプトの要部分である 『MC(=ムービークリップ)の折返し部分』 について, 「いつ」&「何をするのか」という形でまとめてみます。 「いつ」 MCの左端がステージの左端よりも右 になったとき 「何をするのか」 MCを MCの横幅の半分の距離 左 に移動させる 今回のご質問ではこの逆をすれば良いということになります。 上の「いつ」&「何をするのか」を今回用に書き直すと次のようになります。 「いつ」 MCの右端がステージの右端よりも 左 になったとき 「何をするのか」 MCを MCの横幅の半分の距離 右 に移動させる 上の 『MCの右端がステージの右端よりも 左 になったとき』 これは 『MCのx座標が「ステージの横幅-MCの横幅」よりも小さくなったとき』 と言い換えることもできます。 ステージの右端座標は,ステージの横幅です。 これは「ドキュメントのプロパティ」ですでに指定してあるはずですからその数値を使っても良いです。 また,使わなくても一般的には「Stage.width」で求められます。 また MC の横幅は,そのMCの「_width」プロパティで求められます。 つまり 「ステージの横幅」も「MCの横幅」もすでにわかっているのですから 『MCの右端がステージの右端よりも左 になったとき』のx座標は 容易に求まるということになります。 ※参照 【図↓】 以上のように考えれば スクリプトは次のように変更すれば良いということになります。 (変更部分は下部の3割程度のみ。) ================ //このMCが表示された時に実行 onClipEvent (load) { //最初に動く速さを設定 speed = 300; //減速度合いを設定 down_speed = 5; } //毎フレーム時間で実行 onClipEvent (enterFrame) { //speed の値が 10 より大きい場合 if (speed > 10) { //speed の値をdown_speedだけ減算 speed -= down_speed; //speed の値が 10 以下になれば } else { //speed の値を 10 で固定 speed = 10; } //---↑以上は元のスクリプトのまま↑--- // //このMCのx座標をspeedだけ左に移動 this._x -= speed; // //もしこのMCの x座標 が //「ステージ幅-MCの横幅」より小さくなれば if (this._x < Stage.width - this._width) { //このMCの横幅の半分だけ右に移動 this._x += this._width / 2; } } ================ 少し考えて答えを見れば, 「なんだ,たったそれだけのことか。」 と思われるのではないかと思います(小学校算数レベルくらい?)。 ! 画像をクリックしてイメージを拡大