概要
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フレームアクションのスクリプトはコチラ↓
次に、各サムネイル用画像をボタンシンボルにします。タイムラインのトゥイーン以外の部分を選択し、ステージの画像を右クリックし、「シンボルに変換」をクリックして、ついでに対応した命名でインスタンスを入力します。このままでもボタンとして機能しますが、更に機能をつけたい時はダブルクリックして開き、アップ、オーバー、ダウン、ヒットそれぞれフレームを増やします。(smoll_set)に戻り、インスタンス名が表示されている状態で、ボタンアクションでスクリプトを書きます。
これだけ。"smoll01()"が変数としてジャバスクリプトに渡されます。
同じ様にして他のサムネイルもボタンシンボルにし、"smoll○○()" とボタンアクションをつけます。82個目のサムネイルは"smoll82()"ですね。アクションレイヤー、フレームネームレイヤー、ダミーComboboxレイヤーは(smoll_set)のタイムラインの長さと同じです。
あとは、シーン1にたまに現れる吹き出しBOXを配置し、これも下層でループmcにします。パブリッシュ設定はこちら。flash用・html用
Clearboxライブラリ
・表示できるメディアは、画像だけでなく、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種類の表示タイプが用意されている。
・部品を違う色や画像に変えたい時は、上に書いたように「cb_config.js」と「cb_style.css」を変更し、「pic」フォルダの画像を変える。
そして、「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ファイルを開いて下記のように変更してあります。
※2009年版のClearboxライブラリは、本家では見つかりませんでしたが、OpenSpaceに旧Ver.がありました。
※プログラミングの才がなくても、これぐらいはカスタマイズ利用できる例として説明しました。使用画像をはじめ、”人のふんどしで相撲を取る”的な内容ですので、flaファイルなどの配布はできませんし、アフターサービス?などありませんので、よろしくお願いします。
使用画像
画像については、すべて「©青山剛昌/小学館・読売テレビ・TMS 1996」です。
5〜6年前から少しずつ集め貯めていたもので、title=の部分で画像検索すればヒットするかもしれませんが、今では手にはいらないものもあります。著作権の関係上、イメージには、モザイクがかけてありますので、実物とは違います。
また、配信画像そのままでは、FLASHの素材になりません。通常、BMPかJPG画像で配信されているので、フォトショップなどのソフトで、背景を切取り、背景が透明なまま維持するフォーマットで保存する必要があります。今回は、.PSDで作ってFLASHに取り込みました。他のフォーマットとして、GIFやPNGとして保存するのもよいかと思います。FLASHをパブリッシュ、HTMLをコーディング、JSライブラリを編集したりするよりも何よりも、画像前処理(透過性を保持)するのが一番時間がかかります。