Flash: 2008年7月アーカイブ

SWFAddressを叩き起こす

今、製作中の案件でなぜかSWFAddress.getValue()が正しく動作しない。

1回、SWFAddress.setValue()すれば動くんだけど、setIntervalでひたすら待ってもダメ。

初期化処理が完了しない様子。

SWFObjectとのバージョンの組合せでうまく動くとか動かないとかあるみたいだけど、今のところ原因不明。

 

とりあえずExternalInterface経由でURLを取得してゴニョゴニュした後で、setValue()する事にした。

以下、サンプルソース(実際のソースの一部抜き出し)

 

// SWFAddressを待つ 

var getValueTimer = setInterval(Delegate.create (this, waitSwfAddress), 11);

 

// SWFAddress起床処理

function waitSwfAddress() {
  if (SWFAddress.getValue()) {
   clearInterval(getValueTimer);

   start();// 初期化処理とか
  } else {
   var myURL = String(ExternalInterface.call('getRowURL'));

  // 空の値をgetValueしても起きないので、空の場合は害の少ない'/'で(後処理ではsplit('/')するし)
   var param = (myURL.split('#')[1]) ? myURL.split('#')[1] : '/';
      SWFAddress.setValue(param);
  }
 }

 

ただし、onChangeイベントを設定する際は必ず最初に1回イベントが発生してしまうので要注意。