トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     水槽の中の魚のように
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
鈴木亜矢子
Åê¹ÆNo.29548
投稿日時: 2006-10-23 20:10
新米
居住地: 静岡県
投稿: 10
使用環境:
MacOSX
FlashMX
水槽の中の魚のように
初めましてこんにちは。
水槽の中に魚が泳いでいるようなものを作成中です。現在、自分の意図するような動きにならず、行き詰まってしまいました。どなたかご教授ください。

私の環境はMacOSXのFlashMXです。

スクリプトは意味を調べて、なんとなくニュアンスは理解できるけど、自分自身のスクリプトを組み立てることは、まだできない状態です。
今回は、自分の意図したものを作るために、自分なりに考えてみて、いろいろなサイトを参考にスクリプトを組み立てました。


○現在の状態○
魚の動きを「静止状態のMC(stop)」「左に泳いでるMC(swim_left)」「右に泳いでるMC(swim_right)」「左向きから右向きにターンするMC(turn_right)」「右向きから左向きにターンするMC(turn_left)」このようにムービークリップで作りました。

全てのムービークリップを1つのムービークリップ(fish)に1フレームずつ割り当て、1番最初のフレームには、「静止状態のMC(stop)」を置き、ランダムで他の4つのフレームを使いムービークリップを呼び出すようにしました。
n=Math.floor(Math.random()*100);
if (n>40) {
gotoAndStop(2);
} else if (n>30) {
gotoAndStop(3);
}
gotoAndStop(4);
}
stop();


※フレーム「2」は「turn_left」、「3」は「turn_right」、「4」は「swim_right」です。



「fish」のムービークリップを_rootに置き、y座標中心の動きを書きました。

onClipEvent (load) {
	dy = 0.5;
}
onClipEvent (enterFrame) {
	if (this._x<0) {
		dx = dx*-1;
		dx *= 0.5;
		dy *= 0.5;
		_y += dy;
	}
	if (this._x>600) {
		dx = dx*-1;
		dx *= 0.5;
		dy *= 0.5;
		_y += dy;
	}
	if (this._y<0) {
		dy = dy*-1;
		_y -= dy;
	}
	if (this._y>400) {
		dy = dy*-1;
		_y -= dy;
	} else {
		_y -= dy;
	}
}{



x座標の動きは「fish」の中にあるインスタンスに書きました。

「swim_left」
onClipEvent (load) {
	dx = Math.floor(Math.random()*3)+1;
}
onClipEvent (enterFrame) {
	_x -= dx;
}


「swim_right」
onClipEvent (load) {
	dx = Math.floor(Math.random()*3)+1;
}
onClipEvent (enterFrame) {
	_x += dx;
}



「turn_left」と「turn_right」にはそれぞれ「swim_left」「swim_right」の1フレーム目に飛ぶようにスクリプトを書きました。



○問題点と希望○
ランダムのフレーム移動時(ムービークリップ入れ替え時)に一々「fish」の場所が変わるため、「fish」の動きがワープしているように見えてしまう。これを、同じ場所に滑らかにムービークリップの入れ替えをして、魚が泳いでいるように見せたい。


根本的な考え方が悪いのでしょうか??

本当はファイルをアップロードしたいのですが、ファイルをアップロードをしたことがないため、やり方がわかるまで文字情報で失礼します。
やり方がわかり次第、ファイルをアップしたいと思います。
どなたかご教授よろしくお願いいたします。
nabe_1234
Åê¹ÆNo.29554
投稿日時: 2006-10-23 23:26
新米
居住地:
投稿: 21
使用環境:
Windows Vista Home Premium SP1,Flash CS3
Re: 水槽の中の魚のように
状況を完全に把握していないのですが、
魚のムービークリップは1つでも良いのでは?

例えば、
フレーム1?3:左に泳ぐ動き
フレーム4?6:左から右に向きを変える動き
フレーム7?9:右に泳ぐ動き
フレーム10?12:右から左に向きを変える動き
とする。

フレーム3に到達したとき、
フレーム4に進むかフレーム1に戻るかを乱数で選ぶ。
ただし、水槽の左端の場合は必ずフレーム4に進む。

フレーム9に到達したとき、
フレーム10に進むかフレーム7に戻るかを乱数で選ぶ。
ただし、水槽の右端の場合は必ずフレーム10に進む。

ピントがずれてたらごめんなさい。
鈴木亜矢子
Åê¹ÆNo.29565
投稿日時: 2006-10-24 9:55
新米
居住地: 静岡県
投稿: 10
使用環境:
MacOSX
FlashMX
ありがとうございます☆
nabe_1234様

返信ありがとうございます!!
これからnabe_1234様の意見を参考につくってみます。
(私の意図するものができそうな予感です。)

フレームに全部書いてしまうというのは目から鱗です
ひとつの考えに固執してしまうくせがあるので、参考になりますっ。

本当にありがとうございました。後で結果をご報告します。


※アップロードの仕方を検索したのですが、どれも手間がかかるみたいで…。掲示板感覚でできるようなところってないのですかね?

鈴木亜矢子
Åê¹ÆNo.29571
投稿日時: 2006-10-24 12:19
新米
居住地: 静岡県
投稿: 10
使用環境:
MacOSX
FlashMX
やってみました。
nabe_1234様のアドバイスを参考にやってみたんですけど、行き詰まってしまいました。

ムービークリップ「fish」を作り、ムービクリップの表現を全部「fish」の中に入れてフレームラベルで「swim_left」、「turn_right」、「swim_right」、「turn_left」のように区切り、以前やろうとしたムービークリップのランダム表現まではうまくいきました。

しかし、_root上でムービークリップ「fish」を「swim_left」を再生しているときは左に、「swim_right」を再生しているときは右に動かしたいのですが、どうにもその方法が思いつきません。
もしかしたら、現在再生中のフレームラベルを取得できるスクリプトがあれば解決すると思うのですが、そんなスクリプトは存在するのでしょうか ?(調べ方が悪かったのか、私では見つけることができませんでした)

どなたかご教授お願いします
森 巧尚
Åê¹ÆNo.29572
投稿日時: 2006-10-24 12:31
モデレータ
居住地: 宝塚
投稿: 650
使用環境:
.5/CS4/Safari3
XP+2000//IE6
Re: やってみました。
フレームラベルを取得できるスクリプトはありません。

そのムービークリップのフレーム番号を調べれば、どの状態なのかがわかりますから
インスタンス名._currentframe
を使って調べることができます。

ですが、4つの状態のどれかを調べるのですから、変数を1つ用意しておいて、それぞれの状態に変わったときにその変数を書き換えるようにしておけば、その変数を見るだけで状態を調べることができますね。


----------------
森 巧尚
http://www.ymori.com

鈴木亜矢子
Åê¹ÆNo.29575
投稿日時: 2006-10-24 13:13
新米
居住地: 静岡県
投稿: 10
使用環境:
MacOSX
FlashMX
ありがとうございます☆
森 巧尚様、早速のご返信ありがとうございます。

初心者ゆえ、時間がかかるかもしれませんが、森 巧尚様のアドバイスを頑張って試してみたいと思います。
また、結果報告いたします。

ありがとうございました
鈴木亜矢子
Åê¹ÆNo.29576
投稿日時: 2006-10-24 13:58
新米
居住地: 静岡県
投稿: 10
使用環境:
MacOSX
FlashMX
できました!!
森 巧尚様のアドバイスの通り、変数を使用してフレームラベル毎に値を変えましたら見事に自分の意図していた、左に泳ぐムービークリップが表示されると左へ移動し、右に泳ぐムービークリップが表示されると右へ移動するものができました。

変数はなんだか使い方がよくわからず、食わず嫌いのような感覚でしたが、今回の件で、抵抗が薄れました☆
なんだか、ちょっとだけスクリプトが身近に思えるようになりました。
ありがとうございます
もっと自由にスクリプトが組めるように頑張ろうという意欲が湧きました!

あとは、微調整をして自分の満足いく仕上がりにしていきたいと思います。


nabe_1234様、森 巧尚様、初心者な質問に丁寧にお答えくださって、本当にありがとうございました!!
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops