ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

MacでのFlashの動作を修正できました

取り扱える値の範囲内だったら、処理に使用するように修正して対処しました。

f:id:AJYA:20150131235733j:plain
photo credit: tripu via photopin cc

正しく動作するように修正したはずが、Webサーバーが違うためか、期待通りの動作をしない現象が発生しました。

まだMacでのFlashの動作に悩み中 - ソフトウェア開発者の日常

変数のチェックを、未定義の変数なのか、空文字なのかをすれば正常に動作するようでした。
そうでなかった場合さらに調べなければならないので、チェックの方針を変更しました。

範囲内かチェックして、代入

今回の現象の元となっている変数の値は、ある範囲内に収まっていれば利用し、外れていればを変数に1を代入していました。

別の変数を用意して1で初期化し、チェックの対象にしている変数の値が、ある範囲内に収まっていれば代入するようにしました。

var work = 1;
if (param >= 1 ) {
    if (max >= param ) {
        work = param;
    }
}

このように修正して動作を確認したら、IISの環境でも正常に動作するようになりました。

コンパイラのバグ対処

上記のコードは、演算子の&&を使えばif文は1回で済みますが、コンパイラ実体参照と誤って判定してコンパイルエラーにしてしまうので、入れ子のif文になっています。
コメントアウトしていてもコンパイルエラーになるので、コンパイラはまず実体参照がないかチェックしているようです。

また、判断条件で、<と>があるとタグと誤って判定してコンパイルエラーにしてしまいます。