A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
# コードは詳しく読んでません。
ずばりのコードを書く気もありません。あくまで考え方のみです。あしからず。Nフレーム後の雪の座標をあらかじめテーブルに持っておくのも一つの手ですね。
この場合全部が同じ動きになってしまうとつまらないので、適度に乱数で揺らぎを与えてみることになるかと思います。
この回答への補足
「乱数で揺らぎ」を考えてました。
Y軸方向もステップ量を変化させることで、考えて
リサージュー曲線を思い出しました
まぁ~これで充分かな~と・・・。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title>TEST</title>
<style type="text/css">
body{ background-color:black; overflow:hidden; }
</style>
<body>
<script type="text/javascript">
//@cc_on
var i,snow =30;
var sin =[];
for( i=0; i<361; i++) sin[i]=Math.sin(i*3.14159/180);
for( i=0; i<snow; i++) new bringSnow();
function bringSnow(){
this.go = function(){
this.y += this.z/2 +2;
this.p+=2;
if( this.y > document.documentElement.clientHeight-60) this.init();
this.e.style.top = this.y + (sin[this.p%360]*6*this.z|0) +'px';
this.e.style.left = this.x + (sin[this.p*2%360]*6*this.z|0) +'px';
}
this.init = function(n){
this.p =0;
this.y = Math.random() * document.documentElement.clientHeight * ( n != undefined ) |0;
this.x = (Math.random() * document.documentElement.clientWidth |0)-60;
this.z = (Math.random() * 5 |0) + 1;
var op = (Math.random() * 80 |0) + 21;
this.e.style.fontSize = this.z * 7 + 'px';
this.e.style./*@if(1) filter = 'alpha(opacity='+ op+ ')'; @else @*/
MozOpacity = this.e.style.opacity = op / 100;/*@end@*/
}
var ne = document.createElement('div');
ne.appendChild( document.createTextNode( '*' ) );
ne.style.color = 'white';
ne.style.position = 'absolute';
this.e = document.body.appendChild( ne );
this.init(1);
setInterval((function(f_){ return function(){ f_.go.call(f_);}})(this), (Math.random() * 30 |0) +16)
}
</script>
No.1
- 回答日時:
関数のオーバーヘッドのみが問題なら、あらかじめ配列に用意してしまうのも一つの手ですよ。
昔は速度を稼ぐために128倍整数化したサインテーブルをxsin[0..359]のような配列に確保するなどしたものです。
この回答への補足
こんな感じでしょうか?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title>TEST</title>
<style type="text/css">
body { background-color:black; overflow:hidden; }
</style>
<script type="text/javascript">
//@cc_on
var i,snow =50;
var sin =[];
for( i=0; i<361; i++) sin[i]=Math.sin(i*3.14159/180);
for( i=0; i<snow; i++) new bringSnow();
function bringSnow(){
this.go = function(){
this.y += this.z ;
if( this.y > document.documentElement.clientHeight-60) this.init();
this.e.style.top = this.y +'px';
this.e.style.left = (this.x + sin[this.y%360|0]*this.z*10) +'px';
}
this.init = function(n){
this.p =0;
this.y = Math.random() * document.documentElement.clientHeight * ( n != undefined ) |0;
this.x = (Math.random() * document.documentElement.clientWidth |0)-60;
this.z = (Math.random() * 5 |0) + 1;
var op = (Math.random() * 80 |0) + 21;
this.e.style.fontSize = this.z * 7 + 'px';
this.e.style./*@if(1) filter = 'alpha(opacity='+ op+ ')'; @else @*/
MozOpacity = this.e.style.opacity = op / 100;/*@end@*/
}
var ne = document.createElement('div');
ne.appendChild( document.createTextNode( '*' ) );
ne.style.color = 'white';
ne.style.position = 'absolute';
this.e = document.body.appendChild( ne );
this.init(1);
setInterval((function(f_){ return function(){ f_.go.call(f_);}})(this), (Math.random() * 30 |0) +16)
}
</script>
ご回答ありがとうございます。
雪の描くラインをアルファベットの「J]のようにしてみたいのです。
落ちては左右どちらかにカーブして、せり上がるまではいかなくても
よいのですが、そこで落下速度が落ち、また下に落ちるような・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 宇宙科学・天文学・天気 雹は雪国とか関係なく降りますか? 冬は積乱雲が発達しにくく気温が低いので霰になるそうですね。 雹は大 1 2022/06/06 07:28
- ノンジャンルトーク NHKの天気予報で「今夜積雪があり、明朝は冷え込みますので路面凍結に注意して(ください)」と言うのは 1 2023/02/09 20:27
- 宇宙科学・天文学・天気 予報よりも雪の降る日が多いのになぜ雪マークの予報が少ないのですか。 2 2022/12/08 21:57
- 政治 ウクライナ軍は、ロシアの敷設した大量の地雷に苦しんでいますが、私が解決方法を見つけました 9 2023/07/07 20:21
- MySQL SQLです。下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「昨年の各月の総降 1 2023/07/01 00:32
- 宇宙科学・天文学・天気 仙台で積雪量が増えたのに降雪量や天気概況には雪が降らなかった観測結果が出ることが最近多くなっている。 1 2023/02/01 19:16
- その他(暮らし・生活・行事) 雪 6 2023/02/10 14:44
- その他(車) パートタイム4WDで、アイスバーンの山道は危険でしょうか?64ジムニーに乗っています。会社が山の上に 4 2022/12/20 22:57
- 宇宙科学・天文学・天気 仙台は西のほうにある蔵王連峰で雪が落とされるから雪があまり降らないですが、同じように福島も西のほうに 4 2023/01/28 13:45
- その他(暮らし・生活・行事) なぜ日本に住んでいて日本人なのに「世界で一番雪が降る豪雪国は日本なんですよ」というとみんな「えー」 1 2022/12/22 08:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#テキストボックスの文字を配...
-
同じIDで定義した要素の配列を...
-
二次元配列を使って順位をだす...
-
jspからjavascriptの変数引継ぎ
-
フォーム入力値の重複チェック
-
オブジェクトから任意のプロパ...
-
関数でy=g(x)のgとは何の略です...
-
アクセス時からのカウントダウ...
-
pdfに丸秘などのスタンプを...
-
bt_melter.jsをサイトの一部の...
-
javaScriptのコードの修正をお...
-
ASP+アクセスでのSQLコメントに...
-
JavaScript window.openで開く...
-
C#OpenCv V4にのエラーに関する...
-
gas スプレッドシートがアクテ...
-
MFCのキャプション変更
-
船のゲームを作っているのです...
-
Linux バイナリ実行できない "...
-
配列の大括弧と丸括弧はどう違う?
-
javascriptでCSVを呼出しvlookup
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
二次元配列を使って順位をだす...
-
C#テキストボックスの文字を配...
-
同じIDで定義した要素の配列を...
-
jspからjavascriptの変数引継ぎ
-
javascript 変数名の連結をしたい
-
React hooksが値を返して配列変...
-
undefinedを表示させない方法は...
-
javascriptで行を抽出したいです。
-
二次元配列の全要素の全要素を...
-
JavaScriptにおける[] とか :...
-
JavaScriptでの動的な多次元配...
-
順列生成アルゴリズムについて...
-
WSH(Jscript)でファイル一覧
-
JavaScriptからPHPに配列を渡す...
-
javascriptからphpに配列データ...
-
多次元配列から最大値を1行また...
-
textareaに入力されたデータを...
-
どうすればresponseText結果を...
-
フォーム入力値の重複チェック
-
オブジェクトから任意のプロパ...
おすすめ情報