HTMLにswfファイルを貼り付けてブラウザで見るときに、場合によってはHTMLに書いておいた値やパラメータをFlashの変数に渡してあげたいときがあると思います。Flash内を更新したいときや、ちょっとした汎用性のあるコンテンツを作るときに、Flashアプリケーションがインストールされていない環境でも、Flashの更新をしたりする時に便利です。色々ある方法の中で一番シンプルな方法、swfobjectを使って、ActionScriptにどう書けばいいのか紹介します。
swfobjectを使ってパラメータを設定する場合 swfobjectの使い方はswfobject v2.xの使い方を参考にしてみてください。
Flashコンテンツの背景色を色々変更したいという例えで紹介します。HTMLに書くswfobjectの書き方のイメージはこんな感じにします。
HTML 1
2
3
4
5
6
7
8
<script type="text/javascript" src="swfobject.js"></script> <script type="text/javascript"> <!-- var flashvars = {bgColor: "FF0000"};//←背景色 var params = {allowscriptaccess: "always"}; swfobject.embedSWF("flash.swf", "flashContent", "100", "100", "8", "", flashvars, params,attributes); //--> </script> flashvarsに変数名「bgColor」を書いて、値である16進数の「FF0000」を書いてみました。
ではActionScriptではどのように書くか
ActionScript2.0以下でflashvarsを取得する場合 ステージ全部に収まるシェイプを作って、今回の例では100x100の正方形のMovieClipを作ってステージに配置します。インスタンス名を「bg」としました。第1フレームに下記のActionScriptを書きます。
ActionScript 1
2
3
var color_obj = new Color(bg);// カラーオブジェクトを作成する var colorStr = "0x"+_root.
FlashをHTMLに貼り付ける方法の中でswfobjectsというJavaScriptでswfを表示させる方法が便利です。今更な感じもしますが、ボクが使ってて気になったところ、例えば表示した時、一瞬Flashの場所が抜けて、あとから表示することによってガクガク表示したり、swfのキャッシュをクリアにするなど、個人的に問題と思ったところを補う形で紹介したいと思います。
まずはさっそくソースコードのコピペ場所を! HTML 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//swfobject.jsを呼び出す <script type="text/javascript" src="swfobject.js"></script> //表示させるswfコンテンツの設定 <script type="text/javascript"><!-- var flashvars = {hensu: value}; var params = {allowscriptaccess: "always"}; var attributes = {id: "myFlashContent",name: "myFlashContent"}; swfobject.embedSWF("content.swf?u=20091210", "flashContent", "400", "200", "9.0.0", "expressInstall.swf", flashvars, params,attributes); //--></script> //FirefoxでFlashコンテンツに触ったときに出る、 //点線(フォーカスのアウトライン)を消す。 <style type="text/css"><!-- object {outline: none;} --></style> //実際に表示させる場所に書くHTMLと代替コンテンツ <div style="height:200"> <div id="flashContent"> <h1>代替コンテンツ</h1> </div> </div> swfobject.
かなり限られた条件だと思いますが、ボクが見ているFirefoxではFlsahコンテンツを触ると周りに点線が出るという現象が起きてます。その点線は、テキストリンクや画像リンクに対してクリックしたときと同じ点線が表示します。
点線が出てしまう条件の予想 Windows XP
Firefox(Mac版 Firefoxでは出ませんでした。)
swfobject v2.2 でFlashを表示。 点線を消す方法 根本的解決になるかどうかはわかりませんが、swfobjectでも最終的にはobjectタグをdocument.writeしているので、objectタグに対してoutline: none;としてあげると、ボクの環境でFlashの周りの点線は消えました。
コレでいいのかなー^-^;
CSS 1
2
3
object{ outline: none; } 追記:この点線は、Firefoxでフォーカスがあたっているところに対しての点線でした。見てくれを重視するために、この点線自体を消したい場合は、全体に対してCSSでoutline:nonet;とするといいと思います。