SWFAddress を試してみるのだ!
 |  |  |
| [sample] | [Polo (5)] | [Polo (7)] |
要 Flash Player 8 以上SWFObject + SWFAddress で、
ページ自体は変わってないのに、あたかもページが変わったかのように見せるの。
ブックマークも効くよ。ブラウザの"進む""戻る"ボタンも。
まず、SWFAddress をダウンロードしよう。
#最新版は、SWFAddress 2.4 (10/03/11現在)
Asual » SWFAddressswfobject.js / swfaddress.jsswf を表示する 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>
#
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.swfsample.fla と同階層に
SWFAddress.as (AS2.0) を置いて、
sample.swf をパブリッシュする。
参考資料「
szktkhr.org » Blog Archive » SWFAddress導入メモ」
Opera では、ブラウザの"進む""戻る"ボタンが効かないとか。
[追記] (10/03/11 Thu 16:00)なんか変な挙動をするので、SWFAddress2.4に変えてみた。
関連記事:
SWFObject + Express Install関連記事:
SWFObjectを使うのだ! (1)関連記事:
SWFObjectを使うのだ! (2)関連記事:
SWFAddressを試すのだ!関連記事:
SWFObject 1.5 + Express Install関連記事:
SWFForceSizeを試すのだ!