http://www.lepracaun.info/blog/

WebクリエイターLepracaunのサイトです。 Ajax、Flash、Silverlightなど、RIAを実現するためのツールやスクリプトについての話題を取り上げていきます。

« Flash表示用Javascript「SwfTagWriter」 | メイン | Aptana Eclipseプラグイン版によるエディタの併用(その1) »

2007年3月17日

JavascriptとActionScriptの連携その1

JavascriptとActionScriptの連携をいくつかのケースに分けて実践してみたいと思います。
最初のケースは、別のHTMLに埋め込まれているswfの特定のタイムライン(ラベル)にジャンプさせる方法です。

今回のケースでは下記の条件を設定しました。

1.リンク先のHTMLファイルは一つ、swfファイルも一つとする。
2.swfのタイムラインにラベルを記載。リンク元のHTMLから、リンク先swfの特定のラベルのあるタイムラインを最初に表示するようにする。

リンク元HTMLファイル名を、index.html
リンク先HTMLファイル名を、jsas.html
リンク先HTMLに埋め込まれたswfファイル名をjsas.swfとします。

実行結果を見る

サンプルソースは下記の通り。

まず最初に、リンク元のHTMLからリンク先のHTMLにパラメータを渡してやります。

<a href="jsas.html">デフォルトの状態で表示させる</a><br />
<a href="jsas.html?scn1">ラベルscn1を表示させる</a><br />
<a href="jsas.html?scn2">ラベルscn2を表示させる</a><br />
<a href="jsas.html?scn3">ラベルscn3を表示させる</a><br />
<a href="jsas.html?scn4">ラベルscn4を表示させる</a><br />

リンク先HTMLのファイル名の後ろに?+ラベル名を記述します。

リンク先HTMLからリンクを貼っている外部jsファイルに下記のJavascriptを記述します。

function Check() // 何の引数をつけて呼び出されたかをチェックする。
{
var strTemp = new String();
var strArg = new String();
var nLength;
strTemp = location.search;
nLength = strTemp.length;
strArg = strTemp.substring(1, nLength);

document.write('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/ cabs/flash/swflash.cab#version=6,0,29,0" width="320" height="240" id="index">')
document.write('<param name="allowScriptAccess" value="always" />')
document.write('<param name="movie" value="jsas.swf?goJump='+strArg+'">')
document.write('<param name="quality" value="high">')
document.write('<param name="bgcolor" value="#ffffff">')
document.write('<embed src="jsas.swf?goJump='+strArg+'" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="320" height="240" name="index">')
document.write('</object>')
}

<body>~</body>タグ内のswfを表示したい箇所に上記のjavascriptを呼び出すスクリプトを記述。

<!-- 以下でFlash書き出し -->
<script language="javascript">
<!--
Check();
// -->
</script>

呼び出されるswfのルートのタイムラインに下記のActionScriptを記載。

※注意点
swfファイルは完全にパラメータ等が読み込まれてからでないと、動作しないケースがあります。
ローディングバーをつけるなどして、FLASHで使用するデータを完全に読み込んでから実行します。

stop();
gotoAndPlay(_root.goJump);

以上で完了です。
仕組みとしては非常にシンプルです。
1.リンク元HTMLファイルからパラメータをつけて、リンク先HTMLへリンク。
2.リンク先HTMLでパラメータの文字列を取得、FlashVarsでswfファイルに変数goJumpを送信。
3.swfファイルで変数goJumpに該当するラベルにジャンプ。

投稿者 lepracaun : 2007年3月17日 14:03このエントリーをはてなブックマークに追加 Save This Page to del.icio.us このエントリーをlivedoorクリップに追加 このエントリーをニフティクリップに追加 このエントリーをECナビ人気ニュースに追加 このエントリーをBlogPeople Tagsに追加 このエントリーをBlogPeople Instant Bookmarkに追加 このエントリーをPingKingポッケに追加 このエントリーをFC2ブックマークへ追加

トラックバック

このエントリーのトラックバックURL:
http://www.lepracaun.info/mt4/mt-tb.cgi/19

コメント

コメントしてください




保存しますか?

(書式を変更するような一部のHTMLタグを使うことができます)