dポイントプレゼントキャンペーン実施中!

actionscriptを勉強中の初心者なのですが、幅485px、縦733pxの画像を
移動させながら透明から表示させることはできたのですが、画像を座標
x0,y-485の位置で止める方法をご教授お願いいたします。また止まっ
た画像をもう一度透明にしていきたいのですがどのように記述すればいいでしょうか。

よろしくお願いします。

A 回答 (1件)

普通,あまりそういうことは ActionScript ではしませんが,


するとしたら次のように,
条件を1つの条件を満たすたびに,
何でも良い適当な変数(この場合 flg)の値を変更していって,
何でも良い適当な変数の値によって,実行するスクリプトを変えるでしょうね。
フラグのバトンリレーのような感じです。

画像をムービークリップに変換して,
その画像ムービークリップ自体に書くスクリプト「例」です。

------------------------------------
// このムービークリップが表示されたとき
onClipEvent (load) {
// このムービークリップのアルファを 0 にする
this._alpha = 0;
// 動く目標先の座標を設定(可変)
target_x = 0;
target_y = -485;
// 動くスピードを設定(可変)
mov_spd = 1/15;
// アルファが変化するスピードを設定(可変)
alp_spd = 10;
// 目標座標で静止する時間(フレーム数相当)を設定
stp_frm = 5;
//
// フラグ用変数 flg の初期値を 0 に設定
flg = 0;
// カウント用変数 cnt の初期化
cnt = 0;
}
//
// 1フレーム進む時間ごとに毎回実行
onClipEvent (enterFrame) {
// フラグの値が 0 であれば
if (flg == 0) {
// 目標座標(target_x , target_y)に近付けて行く
this._x += (target_x-this._x)*mov_spd;
this._y += (target_y-this._y)*mov_spd;
// アルファを加算
this._alpha += 10;
// アルファの値が 100 以上になったら
if (this._alpha>=100) {
// アルファを 100 で固定
this._alpha = 100;
}
// 目標座標まで 1px 以内に近付いたら
if (Math.abs(target_x-this._x)<=1 && Math.abs(target_y-this._y)<=1) {
// 目標座標で固定
this._x = target_x;
this._y = target_y;
// フラグ の値を 1 にする
flg = 1;
}
//
// フラグの値が 1 であれば
} else if (flg == 1) {
// カウントを開始(1ずつ値を加算)
cnt++;
// cnt が設定静止時間に達すれば
if (cnt>=stp_frm) {
// フラグ の値を 2 にする
flg = 2;
}
//
// フラグの値が 2 であれば
} else if (flg == 2) {
// アルファを減算
this._alpha -= alp_spd;
// アルファの値が 0 以下になれば
if (this._alpha<=0) {
// アルファの値を 0 で固定
this._alpha = 0;
}
}
}
-----------------------------------

ご使用の Flash のバージョンもしくは,
パブリッシュしたい SWF のバージョンを書かれていませんが,
一応,上のスクリプトは Flash 5 以上で作成可能,
Flash Player 5 以上で閲覧可能なスクリプトです。



ご質問では,
目標座標(0,-485)は書かれていますが,
出発地点の座標は書かれていません。
したがいまして,
画像入りムービークリップを最初に置いた場所を出発地点として,
その 画像入りムービークリップ をどこに配置しても良いようなスクリプトにしました。


もし,
出発地点が定点座標で決められるのでしたら,
こういう動きをピッシッ,ピッシッと,ちゃんと決めるのには,
ActionScript でなく,モーショントゥイーンの方が向いていますよ。

ファイル容量は ActionScript にする方が減るかもしれませんが,
人間の脳の動かす労力や,
PC の CPU の無駄づかいも幾分か少なくなると思いますよ。

上のような ActionScript では,
1フレーム再生する都度,
Plash Player で座標などの計算をしなおしますから,
あまり複雑なことをもっとたくさんさせると動きが重くなります。

モーショントゥイーン はフレームごとの座標データがちゃんとパブリッシュされます。
ですから1フレーム再生する都度無駄な計算はしなくて済みます。
つまり モーショントゥイーン では,
1フレーム1フレームごとの座標データが SWF ファイル内にパブリッシュされるため,
ファイル容量は重くなることは多々ありますが,
PCが使用する CPU への負担は幾分か少なくなることが多いということです。


しかし,
たとえばユーザーがクリックした場所を出発地点とするような,
出発地点が定点座標に定められないようなケースでしたら,

 (0,0)クリック用モーショントゥイーン
 (0,1)クリック用モーショントゥイーン
 (0,2)クリック用モーショントゥイーン
   … 略 …
 (550,0)クリック用モーショントゥイーン
 (550,1)クリック用モーショントゥイーン
   … 略 …
 (550,450)クリック用モーショントゥイーン

などというように,
どのケースでもうまく行くようにモーショントゥイーンをあらかじめ作成しておく必要が出てきます。
それは不可能ですし,
またファイル容量も莫大になると思います。

上に書いたスクリプトは,
そういう出発地点が定点に定められない場合には使えるかもしれないという,
一例のサンプル的スクリプトです。
 
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
同じパターンの動きのフラッシュをいくつもつくりたいので、素人ながらに
actionscriptの方が画像を差し替えるだけでいけるのではとおもったのですが、なかなかむずかしそうですね。

丁寧なご回答本当にありがとうございます。

お礼日時:2007/05/02 14:58

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