Flex:NetStatusEvent未被本地共享对象触发。为什么?

时间:2013-03-19 11:41:17

标签: actionscript-3 flash flex

这就是我所做的:在“本地存储”对话框中,我将指针设置为“无”以允许0 kB。然后我运行我的代码。我得到了“本地存储”对话框,其中包含[允许]和[拒绝]按钮。我点击[拒绝]

我得到的输出是

2. we are here now
3. adding a handler to the SharedObject

注意:不调用onFlushStatus事件处理程序。

我重复上述内容,但现在点击[允许]。 我得到的输出是相同的:

2. we are here now
3. adding a handler to the SharedObject

注意:不调用onFlushStatus事件处理程序。

我正在使用此处的代码 Flex: How to detect if user has blocked shared object from writing

无论我尝试什么(我尝试了很多),事件处理程序永远不会在[Allow]或[Deny]按钮点击上调用。但我想知道用户点击了哪个按钮。

var so: SharedObject = null;
var flushStatus: String = null;

so = SharedObject.getLocal('mySpace');
try {
  flushStatus = so.flush();
} catch (error: Error) {
  trace('1. could not write SharedObject to disk');
}           
trace('2. we are here now');
if (flushStatus == flash.net.SharedObjectFlushStatus.PENDING) {
  trace('3. adding a handler to the SharedObject');
  so.addEventListener(NetStatusEvent.NET_STATUS, onFlushStatus);
} 

public function onFlushStatus(event: NetStatusEvent): void
{
  trace('4. in event handler');
}      

根据建议我更改了我的代码并在调用flush()之前添加了事件监听器。然后我再次运行我的测试。不幸的是我没有调用我的onFlushStatus()。

var so: SharedObject = null;
var flushStatus: String = null;

so = SharedObject.getLocal('mySpace');
trace('0. adding a handler to the SharedObject');
so.addEventListener(NetStatusEvent.NET_STATUS, onFlushStatus);
flushStatus = so.flush();
trace('2. we are here now');

public function onFlushStatus(event: NetStatusEvent): void
{
  trace('4. in event handler');
}      

我得到的[拒绝]

的输出
0. adding a handler to the SharedObject
2. we are here now

我为[允许]

获得的输出
0. adding a handler to the SharedObject
2. we are here now

未调用onFlushStatus()。

1 个答案:

答案 0 :(得分:0)

this链接看来,so.flush正在返回String,其中包含flush()命令的结果。您应该查看返回的值,而不是查找要触发的事件。如果它是pending,那么添加您的事件监听器并检查成功/失败。

一个很好的例子:here