0

初めてAdobe Airアプリを操作します。次のコードのエラーが何であるかわかりません。「いいえ」の値を警告していません。

ご覧ください、saveData()getData()はこの質問からです。

            function check(){
                var d1 = getData('item1');
                var d2 = getData('item2');
                if (d1 && d2) {
                    alert('yes');
                } else {
                    alert('no');
                }
            }   

            saveData('item1','value1');
            saveData('item2','value2');
            // I know that its ridiculous to save the data and then reset it.
            // But This is how the main code works. sorry.
            air.EncryptedLocalStore.reset();
            check();
4

2 に答える 2

1

式を評価すると、論理 AND演算子d1 && d2が実行されます。

&& (論理 AND) — 式 1 が偽であるか偽に変換できる場合は式 1 を返し、それ以外の場合は式 2 を返します。

if(d1 && d2)おそらく、条件が真であることをテストすると、両方のインスタンスがロードされたため、「はい」と警告されます。

このアラートは"no"d1なります。d2null

于 2012-11-04T21:17:13.223 に答える
1

チェックする前に ELS からデータを消去しています。

flash.data.EncryptedLocalStore.reset() : 暗号化されたローカル ストア全体をクリアし、すべてのデータを削除します。

なぜあなたがこれを行っているのか、それがどのように機能しているのか(あなたが主張しているように)はわかりませんが、必要以上に必要であると言うなら。これが実際に機能しており、問題が発生していないと仮定すると、このロジックは非常に奇妙であるため、多くの人がこのロジックを修正したいと考えています。

また、条件に渡される引数は文字列として入力する必要があり、条件はそれらの文字列の長さがゼロでないかどうかをチェックする必要があります。

これを試して:

function check():void
{
    var d1:String = getData("item1");
    var d2:String = getData("item2");

    if (d1.length && d2.length)
    {
        alert("yes");
    }
    else
    {
        alert("no");
    }
}   

saveData("item1","value1");
saveData("item2", "value2");

// This is ghetto!
air.EncryptedLocalStore.reset();

check();

エラーや問題を回避するには、コードを厳密に入力する必要があります。

于 2012-11-04T21:53:22.203 に答える