« UJMLサンプル047:物がたくさん落下する効果(放物線エフェクト) | メイン | UIEngine注目指数:2006/2/16[uiengine:15][ujml:4] »

UJMLサンプル048:物がたくさん落下する効果(放物線エフェクト)風付(2006/02/18)

Samples_048_para_03 動作サンプル

今までのものに加え、←→で風向きを調節できるようにした。

ソースコードはファイルでダウンロードできる。↓

Download samples_048_parabolas_control.ujml

トラックバック

この記事のトラックバックURL:
https://www.typepad.com/services/trackback/6a00d8341c2e2e53ef00e55083ec958834

UJMLサンプル048:物がたくさん落下する効果(放物線エフェクト)風付を参照しているブログ:

コメント

potaka

_msec()は連続で呼ぶと同じ値を返します。
その為、サンプルのプログラムでは全部重なって表示されてしまいます。
_srand(seed)のseed値が同じ場合は、同じ乱数(乱数と呼ばないと思うのですが、、)を返すようです。

UIEngineだ

potakaさん、コメントありがとうございます。そうなんですよ。_srand(seed)でseed値が同じときは同じ値になりますね。私はPCを複数台使っていますが、遅いマシンだと_msec()を連続で呼んでも違う値になるのですが高速なマシンだと同じ値になりました。そういうことも考慮して作らないといけませんね。言語リファレンスにも擬似乱数だと書いてありますが、これはクロスデバイスを前提にするが故の宿命だと思います。実装でカバーですね。

potaka

なるほど、PCの速度でエミュレータがそんなことになっていたとは、、、。
予想でしかありませんが、_msec()の使い方に工夫がいるのかな?と感じています。
つまり、_msec()のコールが一つ一つ別スレッドで呼ばれるようなUJMLの記述にするとか、、、。
何かわかりましたらご報告いたします。

とおりすがり

> _msec()の使い方に工夫がいるのかな?

もう解決しているかもしれませんが、
mVal = _srand(_msec)
で初期化して、それ以降は
mVal = _srand(mVal);
で値を取得していくのが良いかと思っています。
私自身は、
<!--
max未満の整数(0または自然数)を返します。
-->
<function name="nextInt" type="int" visibility="public">
<parameters>
<var name="max" type="int" />
</parameters>
<script>
mSeed = _srand(mSeed);
</script>
<return><eval>mSeed % max</eval></return>
</function>

こんな感じの関数を定義したstate-machineを乱数取得用に作って利用しています。

この記事へのコメントは終了しました。