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

当您评估表达式时d1 && d2,您正在执行一个逻辑 AND 运算符

&& (逻辑与) — 如果表达式 1 为假或可以转换为假,则返回表达式 1,否则返回表达式 2。

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

只有在失败时,例如如果d1d2曾经null,此警报才会“否”

于 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 回答