无法找到这个adobe air代码的错误

时间:2012-11-04 18:13:37

标签: actionscript-3 air adobe

首次使用 adobe air app 。不知道下面的代码是什么错误。它没有警告“不”的价值。

请注意,saveData()getData()来自此question

            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();

2 个答案:

答案 0 :(得分:1)

评估表达式d1 && d2时,您正在执行逻辑AND operator

  

<强>&安培;&安培; (逻辑AND) - 返回expression1,如果它为false或者可以转换为false,则返回expression2。

大概当你测试if(d1 && d2)条件为真时,在两个实例都被加载时警告“是”

只有在失败时,例如d1d2 null才会提醒“否”

答案 1 :(得分: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();

为避免错误和问题,您应该严格键入代码。