No.1ベストアンサー
- 回答日時:
学生の頃,テレビ放送かビデオで,
花粉のブラウン運動を見たきりで,
その動き方のイメージにあまり自信がありませんが,
すごく単純で良いのであれば,
10pix程度の小さな正円のMCに次のように書けば良いと思います。
-------------------------------
onClipEvent (enterFrame) {
// 2πまでの乱数を取得
var kaku = Math.Random()*2*Math.PI;
// 座標の移動
this._x += 2*Math.cos(kaku);
this._y += 2*Math.sin(kaku);
}
-------------------------------
サイン・コサイン・タンジェントのアレです。
ただし角度はラジアンです。
また,Flash での y座標 は,
モニタのy座標と同じで,下向きがプラスです。
ですから,上下が反転した座標軸をイメージしてくだされば良いと思います。
もう少し,
ギザギザ運動の度合を滑らかにしたり,
スピード(1フレームで進む距離)などもカスタマイズしたい場合は,
値を変数化して置く方がカスタマイズしやすくなります。
そのカスタマイズ可能バージョンが次のスクリプトです。
同じく,10pix程度の小さな正円のMCに書いてください。
-------------------------------
onClipEvent (load) {
// スピードの設定 (可変)
var spd = 2;
// 動き方を変える頻度の設定(可変)
var freq = 2;
// 変数 cnt の初期値
var cnt = 0;
}
onClipEvent (enterFrame) {
// もし cnt が freq で割り切れたら
if (cnt%freq == 0) {
// 2πまでの乱数を取得
var kaku = Math.Random()*2*Math.PI;
}
// 座標の移動
this._x += spd*Math.cos(kaku);
this._y += spd*Math.sin(kaku);
// 変数 cnt に 1 を加算
cnt++;
}
-------------------------------
この,
var spd = 2;
や
var freq = 2;
の 2 を変化させれば,カスタマイズ可能です。
しかし,上のままでしばらく放っておくと,
ステージ領域から消えてしまう場合があります。
それで,ステージの枠まで来たら折り返すスクリプトを加えたのが次のスクリプトになります。
-------------------------------
onClipEvent (load) {
// スピードの設定 (可変)
var spd = 2;
// 動き方を変える頻度の設定(可変)
var freq = 2;
// 変数 cnt の初期値
var cnt = 0;
}
onClipEvent (enterFrame) {
// もし cnt が freq で割り切れたら
if (cnt%freq == 0) {
// 2πまでの乱数を取得
var kaku = Math.Random()*2*Math.PI;
// もし x座標が ステージより左に出そうであれば
if (this._x<=this._width/2) {
// 角度を右方向へ
var kaku = 0;
// もし x座標が ステージより右に出そうであれば
} else if (this._x>=Stage.width-(this._width/2)) {
// 角度を左方向へ
var kaku = Math.PI;
// もし y座標が ステージより上に出そうであれば
} else if (this._y<=this._height/2) {
// 角度を下方向へ
var kaku = Math.PI/2;
// もし y座標が ステージより下に出そうであれば
} else if (this._y>=Stage.height-(this._height/2)) {
// 角度を上方向へ
var kaku = Math.PI*3/2;
}
}
// 座標の移動
this._x += spd*Math.cos(kaku);
this._y += spd*Math.sin(kaku);
// 変数 cnt に 1 を加算
cnt++;
}
-------------------------------
ごちゃごちゃ書きましたが,
3つ書いたスクリプトのうち,
一番大切なのが,最初のスクリプトです。
あとはカスタマイズしやすくして,
ステージから消えそうになった場合の処理を入れてみただけです。
つまり3つ目はエラー処理のようなものの部分が大半を占めているだけです。
ありがとうございます。
ご回答頂いたスクリプトを元に変数を調整
(微振動している様に見えるレベルまで細かく設定)して
フレームレートを高く設定することで限りなく質の高い
ブラウン運動の再現ができました。
spd、freq変数を組み込んで頂いたおかげでより理想的な再現ができたのだと思います。
途方にくれていたので本当に助かりました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 物理学 『四次元温度』 2 2022/05/09 11:07
- 物理学 観測者が運動している場合、相対論的質量は減りますか? 1 2022/03/25 18:50
- テレビ テレビ用コンバーターがブラウン管に及ぼす「悪影響」について 4 2022/03/30 20:51
- スピーカー・コンポ・ステレオ MCカートリッジのオススメを教えてください。 お時間割いてくださりありがとうございます。 当方、現在 10 2022/07/04 14:20
- 宇宙科学・天文学・天気 AIが答えた方程式 1 2023/02/20 00:12
- サバイバルゲーム マインクラフトの動物 1 2023/05/14 01:19
- 美顔器・脱毛器・電気シェーバー ブラウンシェーバーBS8795の買い替え 1 2022/12/18 19:58
- 英語 この to 前置詞は何の用法ですか? 6 2022/06/02 16:09
- 電動歯ブラシ・電子タバコ 電動歯ブラシ、ブラウン オーラルB iO9 ブラックオニキス の替えブラシ、正規品だと4本入りで4千 2 2023/08/21 07:29
- 幼稚園・保育所・保育園 今の幼稚園児は 3 2023/02/18 05:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のムービークリップの上で...
-
テキストボックスにセルの値を...
-
VBAで改行の入ったデータの正規...
-
プログラミング、アーキテクチ...
-
テキストボックスの中身をリセ...
-
【Photoshop】レイヤー効果の境...
-
テキストエリア内の文字列にリ...
-
ipconfig /releaseって何ですか?
-
【VB.NET】別Formのボタンが押...
-
【ExcelVBA】ファイル名をセル...
-
SNMPの標準MIBについて
-
フォームのテキストの入力数字...
-
Access2000 実行時エラー '3061':
-
IP Address 入力フォームについて
-
FLASHのActivescriptでオブジェ...
-
photoshopで書いた四角の枠の中...
-
VB.NETで数十行のプログラムを...
-
YOASOBI
-
VB6.0のHideのバグ?
-
CreateDialogについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
斜めに移動
-
Flashの3Dメニューの視点を変え...
-
photoshopで書いた四角の枠の中...
-
VBAで改行の入ったデータの正規...
-
YOASOBI
-
VBScriptでMsgBoxのYesNoボック...
-
プログラミング、アーキテクチ...
-
python ボタンを押すと複数の関...
-
別のアプリケーションのテキス...
-
テキストボックスの中身をリセ...
-
テキストボックスにセルの値を...
-
五芒星は、悪魔崇拝とどういう...
-
else if文の順序を変えることに...
-
変数に256文字以上のテキストを...
-
RPG(AS400)の本、サイトってあ...
-
PYTHONのtkinterについて
-
Pythonのtkinterについて
-
ダブルクリックと2回クリックの...
-
シンボル化解除の方法
-
VB6.0で、フォームから、別のフ...
おすすめ情報