« パラメータのプロパティ渡しについて考察 | メイン | クリップボードのデータを拾ってみる »

うっかり限界突破

一瞬はまりかけたので備忘録も兼ねて。

int や uint 型の変数に Number.POSITIVE_INFINITY を代入すると 0 扱いになります。
あたかも初代スーパーマリオの無限1UPで128突破すると死んだら突然ゲームオーバーみたいな(ちょっと違う
なお、以下の4種は強制的に0になります。

・Number.POSITIVE_INFINITY
・Number.NEGATIVE_INFINITY
・Number.MAX_VALUE
・Number.MIN_VALUE

Number に定義された定数なんだから Number 型変数にしか正しく代入できません。
そりゃそーだ。

でも逆に int.MAX_VALUE はちゃんと Number 型変数に代入できる。
そりゃそーだ。

せめて最大値(最小値)に丸めてくれたらいいのになーと思った日曜の昼下がりでした。
とはいえ、丸められてたらこのことに気付かないままだったかと思うとなんだかなー

~ せっかくなので試しにイロイロやってみた ~

new Array( uint.MAX_VALUE + 1 ); // ランタイムにお叱りを受けた

var arr:Array = new Array( uint.MAX_VALUE );
arr.push( 0 );
trace( arr.length ); // 0になったよー

stage.frameRate = Number.POSITIVE_INFINITY;
trace( stage.frameRate ); // どうやら1000で打ち止めらしい

トラックバック

このエントリーのトラックバックURL:
http://void.heteml.jp/mt/mt-tb.cgi/52

コメントを投稿

あわせて読みたい