SWFAddressを試すのだ!

SWFAddress を試してみるのだ! :boy:

hamster_click
hamster_click
hamster_click
[sample]
[Polo (5)]
[Polo (7)]

:caution: 要 Flash Player 8 以上


SWFObject + SWFAddress で、ページ自体は変わってないのに、あたかもページが変わったかのように見せるの。ブックマークも効くよ。ブラウザの”進む””戻る”ボタンも。 :-o

まず、SWFAddress をダウンロードしよう。
#最新版は、SWFAddress 1.1 (07/03/15現在)

:check: Asual » SWFAddress


swfobject.js / swfaddress.js
swf を表示する html と同じ階層にでも置いておく。

swf を表示する html
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript" src="swfaddress.js"></script>

<div id="flashcontent">
代替テキスト(SEO対策) または 代替画像
</div>

<script type="text/javascript">
  // <![CDATA[
  var so = new SWFObject("sample.swf", "externalsample", "360", "300", "8.0.24.0", "#FFFFFF");
  so.addParam("allowScriptAccess", "sameDomain");
  so.addParam("loop", "true");
  so.addParam("quality", "best");
  so.addParam("menu", "false");

  so.write("flashcontent");
  // ]]>
</script>
# :banana: ExternalInterfaceを使ってみる (2) 参照。

sample.fla
_root に、ムービークリップ(インスタンス名: products) を配置。
products は、第2フレーム~第9フレームそれぞれに、画像8つを配置。
メニュー選択で、changeMode() を実行させる。

第1フレームに、
import SWFAddress;

var baseTitle:String = "SWFAddress [sample]";
var urlList:Array = new Array();
for (var n:Number = 1; n <= 8; n++) {
  urlList.push("/polo/"+n+"/");
}

function changeMode(mode:Number):Void {
  SWFAddress.setValue(urlList[mode-1]);
}
SWFAddress.onChange = function():Void {
  var address:String = SWFAddress.getValue();
  var mode:Number = getIndex(urlList, address)+1;
  if (mode > 0) {
    SWFAddress.setTitle(baseTitle+" : Polo ("+mode+")");
  } else {
    SWFAddress.setTitle(baseTitle);
  }

  products.gotoAndStop(mode+1);
};

function getIndex(list:Array, str:String):Number {
  var t:Number = -1;
  for (var n:Number = 0; n < list.length; n++) {
    if (list[n] == str) {
      t = n;
    }
  }
  return t;
}
と記述。

sample.swf
sample.fla と同階層に SWFAddress.as (AS2.0) を置いて、sample.swf をパブリッシュする。

参考資料「szktkhr.org » Blog Archive » SWFAddress導入メモ


Opera では、ブラウザの”進む””戻る”ボタンが効かないとか。 :bouzu: