電子書籍の厳選無料作品が豊富!

flash lite の質問です。flash lite1.1で制作しています。

on(keyPress"5"){
mc._x += 10;
}
こんな感じで、減速しながらスムーズに移動をさせたいです。

_x += (目標の縮尺比率 - _x) / 縮尺のスピード;を使っていろいろチャレンジしているのですが、解決できないのでどなたか教えていただけないでしょうか。

よろしくお願いします。

A 回答 (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);
-----------------


これでムービークリップ内のループ再生によって
ムービークリップが目標座標に近付くものができます。
 
「flash lite の質問です。fla」の回答画像1
    • good
    • 0
この回答へのお礼

わわわ!丁寧にありがとうございます!涙

すごく感謝です!早速挑戦させていただきます!嬉

お礼日時:2010/05/29 15:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!