- ベストアンサー
flash lite の質問です。flash lite1.1で制作して
flash lite の質問です。flash lite1.1で制作しています。 on(keyPress"5"){ mc._x += 10; } こんな感じで、減速しながらスムーズに移動をさせたいです。 _x += (目標の縮尺比率 - _x) / 縮尺のスピード;を使っていろいろチャレンジしているのですが、解決できないのでどなたか教えていただけないでしょうか。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Flash Lite 1.x がそもそも厄介ですが その他色々と厄介事を含むご質問ですね。。。 >on(keyPress"5"){ > mc._x += 10; >} >こんな感じで、減速しながらスムーズに移動をさせたいです。 > >_x += (目標の縮尺比率 - _x) / 縮尺のスピード; >を使っていろいろチャレンジしているのですが 前半は「座標移動」について 後半は「拡大縮小」について書かれているように見えます。 何をどう回答すべき? よくわからないので「x座標の移動」のみについての シンプルな作成例を書きます。 Flash Lite 1.x では onClipEvent (enterFrame){} や MovieClip.onEnterFrame = function(){}; が使えません。 これらと同じ働きをするような仕組みを自作しなければならないわけですが これには ムービークリップのグルグル ループ再生を使います。 新規ドキュメント を作成し ステージ上に「ボタン」と「ムービークリップ」を1つずつ作ります。 ムービークリップはステージ中央辺りが良いです。 またムービークリップには「mc」というインスタンス名を付けるとします。 メインタイムライン ├ムービークリップ:インスタンス名「mc」 └ボタン そのレイヤーとは別に新しいレイヤーを作成し ActionScript を書く専用レイヤーということに決めます。 その ActionScript用 レイヤー の フレーム1 には 次のようなスクリプトを書きます。 ----------------------- //変数 spd にスピード(変化率)を設定 spd = 1/5; //変数 stage_w に ステージ の横幅を設定 stage_w = 240; //目標座標に mc の初期 x座標 を代入 goal_x = mc:_x; ------------------------- ボタンには次のようなスクリプトを書きます。 ----------------------- on (keyPress "5") { //変数 goal_x に 10 を加算 goal_x += 10; //goal_x の値が stage_w より大きくなれば if (goal_x > stage_w) { //goal_x の値を stage_w に固定 goal_x = stage_w; } } on (keyPress "4") { goal_x -= 10; //goal_x の値が 0 未満になれば if (goal_x < 0) { //goal_x の値を 0 に固定 goal_x = 0; } } ----------------------- ↑ボタンによって ムービークリップの座標を変えるのではなく目標座標を変えているのです。 次に ムービークリップ「mc」内タイムラインの編集に入ります。 「mc」内を2フレームにします。 「mc」内に ActionScript を書くレイヤーを挿入し フレーム1 も 2 も空白キーフレームにします。 その フレーム1 には次のように書きます。 ------------------------------ //x座標を目標座標にspdの割合で近づける _x += (/:goal_x - _x) * /:spd; ------------------------------ 「/:」 の 「/」は割り算ではなく「_root」を意味します。 「:」はその階層の 「変数( or プロパティ)」 です。 フレーム2 には次のように書きます。 ----------------- //フレーム1へ戻って再生 gotoAndPlay(1); ----------------- これでムービークリップ内のループ再生によって ムービークリップが目標座標に近付くものができます。
お礼
わわわ!丁寧にありがとうございます!涙 すごく感謝です!早速挑戦させていただきます!嬉