11 月 16 2007
[Flash] NaN と比較演算子
AS2での話だと思うんだけど
NaN>= 1; // true
この判定おかしくね?
調べたらここにあったよ。 http://www.fumiononaka.com/TechNotes/Flash/FN0108015.html
NaNを使った数値の比較演算子(<=,>=)は、なんか変な感じとのこと。
FLVのダウンロード状態を監視するタイマーが
var loadedRatio:Number = ns.bytesLoaded / ns.bytesTotal;
if( loadedRatio>= 1 )
{
//監視終了
}
if( loadedRatio>= 1 )
{
//監視終了
}
みたいな判定式で抜けるようなプログラムを書いていたんだけど
数回に1回、タイマーが1発目で終了しているバグが見つかって
追求したらNaNのせいだった。
これからは、NaNが入る可能性があるNumber型の変数を条件に使う場合は
if( !isNaN(loadedRatio) && loadedRatio>= 1 ){}
とするようにしよう。
ちなみにAS3は期待通りの挙動らしい。