Flash:ブラウザのスクロール状態を取得(修正版)
2012.01.18
以前書いた、
Flash:ブラウザのスクロール状態を取得
という記事のスクリプトを修正したものになります。

JSとFlashでやり取りして、ブラウザのスクロールやサイズの情報をFlashに渡す、というもの。

修正と言いつつも、問題があったデータ取得の部分以外にも
データの受け渡し方などを変更しているため、
実際はほぼ作り直しになっています。

デモ
ダウンロード

取得したデータを使って、情報ウインドウが中央になるようにしています。
ブラウザ幅が広くても狭くても、情報ウインドウが見えるはず。


■動作
このスクリプトで取得できるものは次のようになります。

・ブラウザのスクロール位置( sX, sY )
・ブラウザの幅( bW, bH )
・ページ内のFlashの位置( pX, pY )


それぞれ、情報が変更されたタイミングで
Flash側の関数が引数つきで呼び出されるようになっています。

・ブラウザがスクロールされたとき
 → function browserScroll( sX, sY ){}

・ブラウザがリサイズされたとき
 → function browserResize( bW, bH, pX, pY ){}


このへんは正直わかりづらいので、
サンプルデータを参考にしてみてください。


■設置

【JSの読み込み】
<head></head>内でJSを読み込みます

<script language="JavaScript" type="text/javascript" src="js/getScroll.js"></script>


【Flash設置コードに追記】
ページ内のFlashを設置している箇所を、次のように変更します

・Flashを<div id="flashWrapper"></div>で囲む
・FlashのID、nameを「myFlashContent」と付ける

 ※両方とも、名前が気に入らない場合はJS内の同名の箇所を書き換えれば動きます。


基本的には以上。

Flash部分は以下のようになります。
今回は swfobject.js を使っていますが、IDとnameさえ記述されていれば
<object>タグでも動くと思います。

----------------------------------------------------------------------
<div id="flashWrapper">

<div id="myFlash"></div>

<script type="text/javascript"><!--
var flashvars = {};
var params = {allowscriptaccess: "always"};
var params = {wmode: "transparent"};
var attributes = {id: "myFlashContent",name: "myFlashContent"};
swfobject.embedSWF("main.swf", "myFlash", "840", "1200", "10.0.0", "expressInstall.swf", flashvars, params,attributes);
//--></script>

</div>
----------------------------------------------------------------------

以上です。

ダウンロードにHTMLやFlashの一式が入っていますので、
実際に見て参考にしてみてください。
| コメント(0)

コメントする

※JavaScriptが有効になっている必要があります




月別アーカイブ