刚使用SWFAddress就出现了一个怪异的问题,SWFAddress.setValue(“XXX”);调用后,URL怎么也不改变,不知道什么原因,后来发现如果把这句放在SWFAddress.onChange的事件侦听中就是正常的。想不明白,查看他的代码发现了这么一段:

private static function _check():void {
  if ((typeof SWFAddress["onInit"] == "function" || \_dispatcher.hasEventListener("init")) && !_init) {
    SWFAddress._setValueInit(_getValue());
    SWFAddress._init = true;
  }
  if (typeof SWFAddress["onChange"] == "function" || _dispatcher.hasEventListener("change")) {
    clearInterval(_interval);
    SWFAddress._init = true;
    SWFAddress._setValueInit(_getValue());
  }
}

看来是在没有增加“onChange”事件侦听的话是不能正常工作的了。

private static function _initialize():Boolean {
  if (_availability) {
    ExternalInterface.addCallback("getSWFAddressValue", function():String {return _value}); 
    ExternalInterface.addCallback("setSWFAddressValue", _setValue);
  }
  _interval = setInterval(_check, 10);
  return true;
}

这里”setInterval(_check, 10)“调用了_check()方法,如果没有“onChange”事件侦听就会被认为没初始化。