11 月 16 2007

[Flash] NaN と比較演算子

Published by haga at 17:43 under actionscript2.0, 日記

AS2での話だと思うんだけど

NaN>= 1; // true


この判定おかしくね?

調べたらここにあったよ。 http://www.fumiononaka.com/TechNotes/Flash/FN0108015.html

NaNを使った数値の比較演算子(<=,>=)は、なんか変な感じとのこと。

FLVのダウンロード状態を監視するタイマーが

var loadedRatio:Number = ns.bytesLoaded / ns.bytesTotal;
if( loadedRatio>= 1 )
{
  //監視終了
}


みたいな判定式で抜けるようなプログラムを書いていたんだけど 数回に1回、タイマーが1発目で終了しているバグが見つかって 追求したらNaNのせいだった。

これからは、NaNが入る可能性があるNumber型の変数を条件に使う場合は

if( !isNaN(loadedRatio) && loadedRatio>= 1 ){}


とするようにしよう。

ちなみにAS3は期待通りの挙動らしい。

Trackback URI | Comments RSS

Leave a Reply