ちょっと今さら感はあるのですが、、
あまり新規サイトにFLASHを使う機会がなかったので、SWFObjectを使っていませんでした。
調べてみたところ、ちょっと書き方にばらつきがあるような気もしたのですが、
わかりやすかったのが下記のジェネレーター。
コードが自動生成されるのももちろんうれしいのですが、「これは何?」の解説や、
値を変えることでソースのどこが変わるのかをすぐに確認できるのがとても便利です!
ジェネレーター
http://www.tonpoo.com/docs/swfobject_generator/
こういうサイトを制作される方がいるのは本当にありがたいですね。
リンク切れにならないことを祈ります。。
自分のサイトにも基本の書き方くらいはちゃんと残したいと思います。
FLASH PlayerのバージョンチェックをするexpressInstall.swfはswfobject.jsと同じ場所に入れましょう。
headタグ内
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
//SWFに値を渡す場合の変数の指定
var flashvars = {};
//パラメータ
var params = { bgcolor: '#000000' };
//id、name属性
var attributes = { id: 'topflash', name:'topflash' };
swfobject.embedSWF("movie.swf", "FlashContentId", "900", "450",
"9.0.0", "expressInstall.swf",
flashvars, params, attributes );
</script>
BODYなどコンテンツ内
<div id="FlashContentId">
<!--Flashムービーが再生できない場合の表示内容-->
<a href="http://www.adobe.com/go/getflashplayer_jp"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" border="0" /></a>
</div>
参考サイト
http://d10.d-kids.jp/ueki/2010/04/swfobject-expressinstall.html
FLASHはセキュリティの関係で外部ドメインの画像ファイルを読み込んで表示はできないと思っていたのですが、
裏ワザ的にできるやり方がありました。
間にPHPファイルをはさむことで実現させます。
◆RSSファイルなどの場合
1)下記の内容のurl.phpファイルを作成
<?php readfile( $_REQUEST["url"] ); ?>
2)パラメータを指定して読み込み
http://www.aroun-d.com/url.php?url=http://www.cocorowest.com/rss/
◆画像ファイルの場合
1)下記の内容のimage.phpファイルを作成
<?php
header( “Content-type: image/jpeg” );
readfile( $_REQUEST["url"] );
?>
2)パラメータを指定して読み込み
http://www.aroun-d.com/image.php?url=http://www.cocorowest.com/001.jpg
参考サイト
http://www.dango-itimi.com/blog/archives/2005/000693.html
コンテンツをそれぞれswfファイルで制作し、大枠のswfで読み込んで使用する場合、
読み込まれる側のswfファイルで、_rootの指定をしていると、
大枠のswfの_rootを指し示すことになってしまいます。
またグローバル変数を使用する場合も、それぞれのswfに共通で使用することになるので、
違う役割を持たせたいのに同じ名前をつけている場合は注意が必要です。
一人ですべてのswfファイルを作成していればすぐに気づくと思いますが、
複数の人で分担するような場合には、より注意が必要だと思います。
あるムービーを作っていたらどうも動きがぎこちない。
フレームレートとか、角度とかいろいろ変えるもおかしなままで、
なんか変だぞと思っていたら、、、
あるデータをイラストレータから普通にコピペして使っていました。
どうやらこれがかなり重たかったらしいです。。。
というわけで、PNG形式の画像と差し替えて無事解決!!
いくつかムービークリップを重ねたときに、
下のムービーのボタンとかが押せたりするのを回避する方法。
上に重ねたムービークリップに下記のASを書きます。
on (rollOver) {
this.useHandCursor = false; // ハンドカーソルにならないように。
this.onRelease = function(){} // 空のマウスイベントを指定
}
Shinzoneのショッピングトップページにてつまづいたこと。
ActionScriptで空のムービークリップをつくって、
そこに商品の写真をロードするのは簡単にできましたが、
その写真をクリックできません。。。
Scriptの書き方が悪いのかと思ったら、
どうやら仕様の問題のようです。
http://www.fumiononaka.com/TechNotes/Flash/FN0307007.html
3. MovieClip.loadMovieで外部ファイルを読込む際の注意
外部ファイルをMovieClip.loadMovieメソッドで読込むと、ターゲットインスタンスにスクリプトで設定したプロパティやメソッドなどはすべてクリアされます。
画像の読み込みは何かと使うことが多いと思うけど、
なかなか手ごわいものです。
ユーザーのディスプレイの解像度の情報を取得するのに
本当はPHPで何かできればと思っていましたが、
PHPはサーバサイドのスクリプトであるため、
やはりできないようです。
というわけで、まずFLASHで取得して、
PHPに渡すことにしました。
元々FLASHとPHPの連携だったので、その点楽でよかったです。
// ディスプレイの解像度取得
send_lv.sWidth = System.capabilities.screenResolutionX;
send_lv.sHeight = System.capabilities.screenResolutionY;
// pathに指定したPHPに値を渡す。
send_lv.sendAndLoad(path, receive_lv, "POST");
プルダウンメニューなどで、Aというムービークリップのマウスオーバーで、
Aの上にBというサブメニューのムービークリップを出す場合、
そのBのマウス処理をrolloverなどで書こうとすると、
Aのマウス処理が優先されて、Bの処理ができません。
(続きを読む…)
FLASHのActionscriptは、クライアントサイドで動く
スクリプトであるため、DBとの連携にはPHPと組み合わせます。
「web creators」の2006年3月号を参考にしました。
めっちゃ古い号に載ってる技術だ。。。
ちょっと悩んだのが文字コード。
何か新しいことをすると必ず引っかかってきます。
FLASHはUTF-8がデフォルトらしいので、
PHPのファイルをUTF-8で作成、アップし、
PHPのデータベース接続処理の後に、
pg_set_client_encoding($con, UNICODE);
で解決。
