Dynamic Page Flip v2 (Javascript から Flash を操作)

JavaScript から操作

  1. import flash.external.ExternalInterface
    と ExternalInterface.addCallback により、JavaScriptから操作
  2. Action Script2.0 以上必要
  3. デモサンプルR
  4.    →サンプル ソース

  5. 右綴じのサンプルで実行、左綴じは従来のスタイル
    R.fla は書き換えないで、import_xml.as で対処、R.htm に JavaScript 追加
  6. IE限定です。FireFox 他に関しては、document["book"] をwindow["book"] に変更
【import_xml.as】
import flash.external.ExternalInterface;
if(ExternalInterface.available) {
ExternalInterface.addCallback("gotoBK", null, gotoBack);
//gotoBK : JavaScript から呼び出される関数名
//gotoBack : 対応する Flash の関数名
ExternalInterface.addCallback("gotoTP", null, gotoTop);
ExternalInterface.addCallback("Jump_PG", null, Jump_Page);

} else {
_root.pageNav.ttl_name= "js";
}
function gotoBack() {
if (binding=="right") {
_root.gotoPage(1);
} else {
_root.gotoPage(book_pages);
}
}
function gotoTop() {
}if (binding=="right") {
_root.gotoPage(book_pages);
}} else {
_root.gotoPage(a);
}}
}
function Jump_Page(val) {
//val: JavaScript から送られたパラメータ
}var t_pg=val ;
}if (binding=="right") {
t_pg = book_pages-val ;
}}
}_root.gotoPage(t_pg);
}
// -----import_xml.as ここまで

R.fla を ActionScript2.0 でパブリッシュ

【R.htm】
// ボタンクリックでJavaScript を呼び出す。
<form name="f_jump"/>
<button onclick="location.href='L.htm'">左閉じ</button>
<button onclick="gotoBack();">gotoBack</button>
<button onclick="gotoTop();">gotoTop</button>
<button class=nr onclick="nbBTN('n');"><<</button>
<input type="text" name="j_pg" value="0" size=1 style="text-align:right">
<button onclick="Jump_PG();">Jump</button>
<button class=nr onclick="nbBTN('b');">>></button>
</form>
// -----R.htm ここまで

【JavaScrip】
<script language="JavaScript">
var m_pg = f_mpg.mpg.value ;
function gotoBack() {
//document["book"] swfの名前、swfobject.js に追加(後述)
if (document["book"]) {
//flash の gotoBK 関数呼び出し
document["book"].gotoBK();
}
}
function gotoTop() {
if (document["book"]) {
document["book"].gotoTP();
f_jump.j_pg.value = 0 ;
}
}
function Jump_PG() {
if (document["book"]) {
var val = f_jump.j_pg.value ;
document["book"].Jump_PG(val);
//Jump_PG(val) → Flash の Jump_Page(val)
}
}
//右綴じの場合、ページ数が逆となる。
function nbBTN(nb) {
if (document["book"]) {
var pg_val = f_jump.j_pg.value ;
if ((pg_val % 2)==1) {add_val = 2 ;} else {add_val = 1 ;}
if (nb=="n") {var val = parseInt(pg_val)+parseInt(add_val) ;}
if (nb=="b") {var val = parseInt(pg_val)-parseInt(add_val) ;}
document["book"].Jump_PG(val);
if (val<1) {val = 1;}
if (val>parseInt(m_pg)) {val = m_pg ;}
f_jump.j_pg.value = val ;
}
}
</script>
// -----javascript ここまで

【swfobject.js】 修正
swfobject.js の </object id=\""+this.getAttribute("id")+"\" に name属性を追加
name=\"book\"

JavaScriptで目次を作成してジャンプ

□ swf は最上位に表示される
□ 目次領域はxmlから読み込み
□ (目次クリック時に swf 領域を hidden にして、目次領域が表に出るようにする。)
□ → 変更 : デモでは目次クリック時に swf 領域を 左にずらして、目次領域が表に出るようにする。
  1. 目次ファイル(right_m.xml)を読み込んで目次作成
  2. デモサンプルR2
  3.    →html と 目次xml のみ
□ データ等他のファイルは、js2flsh.zip と共用
[基本]   [応用]   [応用2]   [サンプル]   [ GO TO TOP ]
追加 2007年8月23日作成