FLASHからClearboxを使うフォトギャラリー

ふらっしゅからくりあぼっくすをつかうほとぎゃらりー

表示160×250(実際の大きさ 同じ)ピクセル
‡←この‡より左の部分で収まる省スペース型の、160×250ピクセルのフォトギャラリーです。
‡ 
‡ サーバーの仕様によっては万能ではありませんが、
‡ ブログパーツとか、PHPのサイドバーとかガシェットなんかに丁度いいサイズだと思います。
‡ 
‡ 実際は、フォトギャラリー用に色んなオープンソースがありますし、わざわざFLASHを購入してフラッシュを作る必要はないですよね。
‡ ジャバスクリプトだけで事足ります。(サムネイルが5〜6個ならオープンソースで見映えのいいページが作れる。)
‡ 
‡ このムービーは一つ一つ現れるのがサムネイルになっていて、クリックするとそれに対応したイメージを表示します。
‡ 全部で90個あるので、普通にhtmlにすると、90個も並んだすごい大きなページになっちゃいますが、
‡ これなら、他のコンテンツも配置できますし、省スペースにこだわる意義はあると思います。
‡ 
‡ ただし、見たいサムネイルをクリックし損ねたり(?)、イメージを眺めているうちにサムネイルを見逃したり⋯
‡ そういった欠点をカバーするために、フラッシュからClearboxライブラリを使う、という仕様になっています。
‡ また、コンボボックスを開いて、ムービーの順番を変える事ができます。

サンプルのみを利用する

概要

jQueryのライブラリは非常にたくさんあって、Lightboxライブラリなんかは有名ですが、FLASHのアクションスクリプトでExternalInterfaceクラスを使って、ジャバスクリプトと連携するらしい。ですが、どのライブラリでもVer.が違うと動かないとかの不具合があり、ExternalInterfaceは場合によっては動かないというブログもある。jQueryのコンフリクトが起きるとこわいし。なので従来どおり、getURL("javascript:void○○")で変数をジャバスクリプトに渡し、html側で詳しくジャバスクリプトをコーディングする。そしてサムネイル表示機能やグループ表示ができる「Clearboxライブラリ」を使う事にします。FLASHプロジェクトは今更のAS2です。

FLASH(アクションスクリプト)

AS2プロジェクトで、160×250、8fps、プレーヤー7で新規プロジェクトを作成します。
まずはシーン1。ムービークリップを新規作成します。サイズはW213×H269。このmcをX0.0、Y-25.0の位置に配置し、mcとしてインスタンス(smoll_set)を入力して、ダブルクリックで開きます。この中にサムネイルとなる画像を配置し、フェードインとフェードアウトのトゥイーンをつけ、重ねながら一つずつずらして配置します。これだけだと永遠にループするただのムービーです。

次にコンボボックスを設置。配置するのはシーン1(_root)ではなく、(smoll_set)の中です。コンポーネントからコンボボックスをライブラリに入れた後、(smoll_set)のタイムラインのレイヤーを増やして、コンボボックスをステージにドロップします。サイズW120×H22、位置X0.0Y-22.0に設定し、インスタンス(combobox)とします。再びレイヤーを増やしてそこにアクションスクリプトを記述
smoll_setフレームアクションのスクリプトはコチラ↓

先程配置したcomboboxはステージ外ですのでダミーです。
これがないと、なぜだか、ループmcと同期しなくて、スクリプトで記述したcomboboxが
1回再生したら248.5の位置から0,0に飛んで機能終了してしまうんです。
試行錯誤の末、ステージ外にダミーのcomboboxを置くことで、永遠にループmcと同期す
るようになりました。
ただし、textFieldのラベルが表示されなくなってしまうので、ダイナミックテキストを
利用して、セレクトアイテムのラベルを表示するようにします。(苦・汗)
シ−ン1(_root)に戻り、レイヤーを一つ増やし、そこにインスタンス(tf)のW100.4×H20.8
ダイナミックテキストをX23.8,Y224.0の位置に配置します。
階層を一つ上にして作らないと、深度がcomboboxの上にならないのです。
ダイナミックテキストを重ねた事で、textField部分のリンクヒットが反応しなくなってし
まうので、どうせなら試行錯誤ついでに、もっとカスタマイズしちゃえ、ということで、
更に画像を被せちゃいます。(もうやけくそ)
_rootのステージムービープレビューします。スクリプトで記述したcomboboxが表示される
ので画面キャプチャーし、フォトショップなどの画像処理ソフトでボーダーの色を変えた
画像を作ります。それをライブラリに読み込み、シーン1のダイナミックテキストのレイヤ
ーの下に配置
します。comboboxのaddItemのdeta部分は単なるデータで、ループmcの
フレーム数を読みにいってるわけではないようです。なのでフレームネームを付ける必要が
あります。再び(smoll_set)のステージに降り(?)てレイヤーを追加し、フレームネームを付
けます。もちろん、スクリプトに記述したdetaと同じネームです。(g1htm
以上、スマートでなくて大変みぐるしいですが、
スクリプトで記述したcomboboxをループさせるための処理(&カスタマイズ?)でした。


次に、各サムネイル用画像をボタンシンボルにします。タイムラインのトゥイーン以外の部分を選択し、ステージの画像を右クリックし、「シンボルに変換」をクリックして、ついでに対応した命名でインスタンスを入力します。このままでもボタンとして機能しますが、更に機能をつけたい時はダブルクリックして開き、アップ、オーバー、ダウン、ヒットそれぞれフレームを増やします。(smoll_set)に戻り、インスタンス名が表示されている状態で、ボタンアクションでスクリプトを書きます。
これだけ。"smoll01()"が変数としてジャバスクリプトに渡されます。 同じ様にして他のサムネイルもボタンシンボルにし、"smoll○○()" とボタンアクションをつけます。82個目のサムネイルは"smoll82()"ですね。アクションレイヤー、フレームネームレイヤー、ダミーComboboxレイヤーは(smoll_set)のタイムラインの長さと同じです。
あとは、シーン1にたまに現れる吹き出しBOXを配置し、これも下層でループmcにします。パブリッシュ設定はこちら。flash用html用

Clearboxライブラリ



・非商用ページでの利用ならダウンロードフリーです。
 http://www.clearbox.hu/index_en.html 
 現在は、Version 3.7 (2011. 06. 28.)

・jQueryやMooToolsなど他のスクリプトに依存せず、
このライブラリだけで、オーバーレイ上に拡大エフェクト表示するジャバスクリプトです。
使っているサーバーやブログが、
既にjQuery仕様だったりすると、コンフリクトが起きなくて安心ですね。
(ただしインターネットエクスプローラの場合、
           回転機能は、つかえません。)


表示できるメディアは、画像だけでなく、Flash、QuickTime、Windows Media。htmlコンテンツ、Iframeコンテンツも表示し、混在も可能。
  拡張子(BMP, GIF, JPG, JPEG, PNG)の画像、(AVI, MOV, MPG, MPEG, WMV,SWF)の動画、(MP3, WAV, WMA)の音源、
表示機能はnext,previewだけでなく、サムネイルのグループギャラリー表示、画像の回転表示(IE以外)、マウスホイールによるチェンジができ、もちろんスライドショー機能付きで、コンテンツを新規ウインドウで開く事もできる、多機能な表示能力。好きな方法でどうぞ、という感じ。

設置方法は、ライブラリフォルダとclearbox.jsファイルを同じ階層におき、htmlを開いて編集。<head>〜</head>間に
を入れます。
そして、<body>〜</body>間に、
を入れます。
 1枚だけでなくギャラリーとして表示したい時は、
と指定。
 更にサイズも指定する場合は、rel="clearbox[ ]のパラメータを(,,)で区切って
と指定。
 他にもパラメータが色々ある。tnhrf=サムネイル画像のパス、comment=詳しいコメント、dlhrf=ダウンロード、とか。他にもいろいろ使い方あるけど、省略。本家の原文参照してソースを見てください。
 あまり使う事はないと思うが、文字にリンクさせ、htmlタグというか、テキストのみを表示する事もできる。


日本語表示にするには、languageフォルダにある「en」というフォルダをコピーして「ja」という名にします。そして、<head>〜</head>間の『 src='clearbox.js'」の部分を、「 src='clearbox.js?lng=ja';」に書きかえて保存する。意味は、languageファイルは「ja」フォルダにあって、その中のlanguageファイルを使うよ〜。という記述。そして「cb_language.js」の中身を日本語に書き換えます。
書き換えた「cb_language.js」の中身はこちら↓

日本語表示にするには



3種類の表示タイプが用意されている。

ライブラリ ←ライブラリには3種類の表示タイプが用意されている。
configフォルダ内には「default」フォルダ、「grow_transparent」フォルダ、「shadow」フォルダ、の3つがあり、
純正では「default」フォルダを使う事になっている。
clearbox.jsを開いて、77行目の「var CB_Config='default';」の部分を'grow_transparent';か'shadow';に書き換えてやればいい。
ライブラリ
3種類とも満足できない場合はpicフォルダ内の画像を変え、
「cb_config.js」と「cb_style.css」をカスタマイズしてやれば、更にオリジナルになる。→



部品を違う色や画像に変えたい時は、上に書いたように「cb_config.js」と「cb_style.css」を変更し、「pic」フォルダの画像を変える。

←「cb_config.js」の中身
純正ではなく、既に何カ所か変更しています。
コメント部分に、(デフォルトは〜)とあるのがそれ。

←「cb_style.css」の中身
純正ではなく、既に何カ所か変更しています。
コメント部分に、(デフォルトは〜)とあるのがそれ。


そして、「pic」フォルダにある、各部品をフォトショップなどのソフトで開き、好みの部品に変えてやる。(ただし、サイズは変えない)
今回変えたファイル↓(色を付けただけです。)

html(ジャバスクリプト)

ソースを見てもらえば、一目瞭然ですが、FLASHをhtmlに追加した時は、FLASHのパラメータに、(wmode = transparent)が必要です。これは、FLASHの深度をClearboxライブラリより下に表示させる為必須です。FLASHからClearboxを使うには、<head>〜</head>間にジャバスクリプトを記述します。アクションスクリプトから渡された変数"smoll○○()"をどう動かすかです。本家の原文によると、使うのは"CB_Open()"です。 基本のパラメータは、
CB_Open('href=開きたい画像のパス,,parameter2=表示させたい文字,,parameter3=グループの名前');
なので、<script type="text/javascript">〜</script>間に
function smoll○○(){CB_Open('href=開きたい画像のパス,,title=表示させたい文字,,gallery=グループの名前');}
を記述します。
過去に同じ方法でThickboxライブラリとLightboxライブラリを使った事がありますが、ギャラリーグループのパラメータは無視されてしまい、成功例はないかとネットサーフィンしましたが、どのページもギャラリーのパラメータが効かないと書かれてありました。
Clearboxライブラリは、<body>〜</body>間に記述した<a href="○○" title="○○" rel="clearbox[gallery=グループ名,,tnhrf=サムネイル画像のパス]"></a>を残しておけば、<head>〜</head>間のスクリプトと同調します。(なぜ同調するか私にはわからない。)
あと、こんな使い方をするとIE(インターネットエクスプローラ)でバグがでます。2009年版ではよかったのですが、その頃はFF(ファイヤーフォックス)でバグがあって見なかった事にしてました(汗)。今年に入って、FFのバグに対処されたと喜んでいたら、IEでバグ・・・どうにもFFとIEの違いは困ったものです。(※ここで言うバグとは、こんな使い方をするとの意で、普通にClearboxライブラリを使う分にはバグはありません。)仕方がないので、ブラウザがIEの場合は、2009年版を使い、その他は今年Ver.を使う、という分岐がしてあります。

分岐に伴い今年Ver.のライブラリフォルダ名を「clearbox_new」に変え、両方のclearbox.jsファイルをcb_oldフォルダとcb_newフォルダに分けて入れ、今年Ver.のclearbox.jsファイルを開いて下記のように変更してあります。

このファイルが正常に動くためのフォルダ構造↓

htmlから見たアドレス
2009年Ver.
設置ファイル(clearbox.js) cb_old/clearbox.js
コアプログラミングファイル(cb_core.js) clearbox/core/cb_core.js
言語設定ファイル(cb_language.js) clearbox/language/ja/cb_language.js
スタイル設定ファイル(cb_config.js) clearbox/config/default/cb_config.js
スタイルシート(cb_style.css) clearbox/config/default/cb_style.css
部品画像 clearbox/config/default/pic/
今年Ver.
設置ファイル(clearbox.js) cb_new/clearbox.js
コアプログラミングファイル(cb_core.js) clearbox/core/cb_core.js
言語設定ファイル(cb_language.js) clearbox_new/language/ja/cb_language.js
スタイル設定ファイル(cb_config.js) clearbox_new/config/default/cb_config.js
スタイルシート(cb_style.css) clearbox_new/config/default/cb_style.css
部品画像 clearbox_new/config/default/pic/
FLASH・イメージギャラリー用
イメージファイル(01〜82.png) img/(01〜82.png)
背景ファイル img/Background.jpg
サムネイルファイル(01〜82.png) img/imgs/(01〜82.png)
FLASHファイル smoll.swf
FLASH表示用ジャバスクリプト AC_RunActiveContent.js

部品画像用picフォルダの中身は、今年Ver.も2009年Ver.も同じです。
blank.gif、btm_dl.gif、btm_max.gif、btm_next.gif、btm_prev.gif、btm_rot_l.gif、btm_r
ot_r.gif、close.png、next.png、no_flash.gif、no_html.gif、no_iframe.gif、no_image.gi
f、no_inner.gif、no_quicktime.gif、no_winmedia.gif、no_winmediaavi.gif、no_winmed
iamp3.gif、no_winmediampg.gif、no_winmediawav.gif、no_winmediawma.gif、no_win
mediawmv.gif、no_youtube.gif、pause.png、prev.png、s_btm.png、s_btmleft.png、s
_btmright.png、s_left.png、s_right.png、s_top.png、s_topleft.png、s_topright.png、s
tart.png、start_outer.gif、rot_r_outer.gif、rot_l_outer.gif、prev_outer.gif、pause_oute
r.gif、next_outer.gif、loading.gif


※2009年版のClearboxライブラリは、本家では見つかりませんでしたが、OpenSpaceに旧Ver.がありました。
※プログラミングの才がなくても、これぐらいはカスタマイズ利用できる例として説明しました。使用画像をはじめ、”人のふんどしで相撲を取る”的な内容ですので、flaファイルなどの配布はできませんし、アフターサービス?などありませんので、よろしくお願いします。

使用画像

画像については、すべて「©青山剛昌/小学館・読売テレビ・TMS 1996」です。
5〜6年前から少しずつ集め貯めていたもので、title=の部分で画像検索すればヒットするかもしれませんが、今では手にはいらないものもあります。著作権の関係上、イメージには、モザイクがかけてありますので、実物とは違います。
また、配信画像そのままでは、FLASHの素材になりません。通常、BMPかJPG画像で配信されているので、フォトショップなどのソフトで、背景を切取り、背景が透明なまま維持するフォーマットで保存する必要があります。今回は、.PSDで作ってFLASHに取り込みました。他のフォーマットとして、GIFやPNGとして保存するのもよいかと思います。FLASHをパブリッシュ、HTMLをコーディング、JSライブラリを編集したりするよりも何よりも、画像前処理(透過性を保持)するのが一番時間がかかります。

FLASH関連リンク


サイトの他のコンテンツ