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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
斜めに移動
-
外部テキストのタグ
-
最後のフレームでジャンプするU...
-
photoshopで書いた四角の枠の中...
-
スクロールバーの自作の仕方
-
SharedObjectの使い方(長文です)
-
MovableTypeの導入について
-
(AS3)「var mc:MovieClip = new...
-
フォームのテキストの入力数字...
-
ACCESS2003 VBAテキスト編集
-
外部テキストファイルでは文字...
-
PythonでSetWindowPosを使うに...
-
画像を一定時間ごとに切り替え...
-
外部テキストの文字化けが直ら...
-
マウス自体の移動量の取得
-
Actionscript3.0のクラス定義の...
-
XMLでJPEGスライドを作成_表示...
-
丸いものがボコボコ出てくるよ...
-
レーダーチャートの描画
-
ラッコって?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 ゲーム
-
Flashパブリッシュエラー
-
外部swfを読み込んだときのずれ
-
文字(テキスト)の潰れ・にじ...
-
MCをブラウン運動させたい。
-
flash lite の質問です。flash ...
-
photoshopで書いた四角の枠の中...
-
変数に256文字以上のテキストを...
-
VBAで改行の入ったデータの正規...
-
python ボタンを押すと複数の関...
-
VBScriptでMsgBoxのYesNoボック...
-
別のアプリケーションのテキス...
-
テキストボックスの中身をリセ...
-
五芒星は、悪魔崇拝とどういう...
-
テキストボックスにセルの値を...
-
static関数がmapファイルに載ら...
-
VB6.0 でメニューを作りたいん...
-
【VB.NET】別Formのボタンが押...
-
テキストエリア内の文字列にリ...
-
UWSCのBTN関数について。
おすすめ情報