刚使用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”事件侦听就会被认为没初始化。