<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>TONPOOBLOG &#187; swfobject</title>
	<atom:link href="http://www.tonpoo.com/blog/category/flash/swfobject/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tonpoo.com/blog</link>
	<description>神宮前にあるWEB制作事務所「株式会社ブリコルール（bricoleur inc.）」に所属しているFlash（ActionScript）開発＆WEB制作プロジェクト「Tonpoo.com」のブログです。</description>
	<lastBuildDate>Tue, 27 Jul 2010 12:20:08 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tonpoo.com/blog/category/flash/swfobject/feed/" />
		<item>
		<title>FlashからExternalInterfaceクラスを使ってLightboxを呼び出す</title>
		<link>http://www.tonpoo.com/blog/2009/12/flash-externalinterface-lightbox/</link>
		<comments>http://www.tonpoo.com/blog/2009/12/flash-externalinterface-lightbox/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 13:55:06 +0000</pubDate>
		<dc:creator>tonpoo</dc:creator>
				<category><![CDATA[actionscript2]]></category>
		<category><![CDATA[actionscript3]]></category>
		<category><![CDATA[swfobject]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.tonpoo.com/blog/?p=649</guid>
		<description><![CDATA[「Flash（swf）からLightboxを呼び出す」というニーズがこれまでに何回かあり、またついさっきもあって、その都度ちょっと面倒だったりしたのでメモ。なお、ウチの会社ではswfファイルの埋め込みには通常swfobject2を使ってるので、以下は「Lightbox2.04 + swfobject2 + ActionScript（ExternalInterfaceクラス）」という組み合わせが前提となっています。 Lightboxを入手 まず使用するLightboxのバージョンは2.04。Lokesh Dhakar氏によるLightbox 2の公式サイトで入手。 ベースHTMLの作成 次にベースとなるHTMLを作成。今回はとりあえずSWFObject 2 HTML and JavaScript ジェネレーターを使ってサクっと作りました。ポイントとしては、「SWFの定義」のオプションを一部変更すること。 まず、Lightboxを表示した際に、swfコンテンツが上に来てしまうのを避けるため、wmodeをtransparentに設定。また、ExternalInterfaceクラスを使うので、allowscriptaccessをalwaysに設定。できあがったHTMLは下記の通り： &#60;!DOCTYPE html PUBLIC &#34;-//W3C//DTD XHTML 1.0 Transitional//EN&#34; &#34;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&#34;&#62; &#60;html xmlns=&#34;http://www.w3.org/1999/xhtml&#34; lang=&#34;ja&#34; xml:lang=&#34;ja&#34;&#62; &#60;head&#62; &#60;meta http-equiv=&#34;Content-Type&#34; content=&#34;text/html; charset=utf-8&#34; /&#62; &#60;title&#62;&#60;/title&#62; &#60;meta http-equiv=&#34;Content-Script-Type&#34; content=&#34;text/javascript;&#34; /&#62; &#60;script type=&#34;text/javascript&#34; src=&#34;swfobject.js&#34;&#62;&#60;/script&#62; &#60;script type=&#34;text/javascript&#34;&#62; var flashvars = {}; var params = {}; params.wmode = [...]]]></description>
			<content:encoded><![CDATA[<p>「Flash（swf）からLightboxを呼び出す」というニーズがこれまでに何回かあり、またついさっきもあって、その都度ちょっと面倒だったりしたのでメモ。なお、ウチの会社ではswfファイルの埋め込みには通常swfobject2を使ってるので、以下は<strong>「Lightbox2.04 + swfobject2 + ActionScript（ExternalInterfaceクラス）」</strong>という組み合わせが前提となっています。</p>
<h3>Lightboxを入手</h3>
<p>まず使用するLightboxのバージョンは2.04。<strong><a href="http://www.huddletogether.com/projects/lightbox2/#download" target="_blank">Lokesh Dhakar氏によるLightbox 2の公式サイト</a></strong>で入手。</p>
<h3>ベースHTMLの作成</h3>
<p>次にベースとなるHTMLを作成。今回はとりあえず<strong><a href="http://www.tonpoo.com/docs/swfobject_generator/" target="_blank">SWFObject 2 HTML and JavaScript ジェネレーター</a></strong>を使ってサクっと作りました。ポイントとしては、「SWFの定義」のオプションを一部変更すること。<br />
<img src="http://www.tonpoo.com/blog/wp-content/uploads/2009/12/ss1.jpg" alt="ss1" title="ss1" width="350" height="287" class="alignnone size-full wp-image-656" /></p>
<p><span id="more-649"></span></p>
<p>まず、Lightboxを表示した際に、swfコンテンツが上に来てしまうのを避けるため、wmodeをtransparentに設定。また、ExternalInterfaceクラスを使うので、allowscriptaccessをalwaysに設定。できあがったHTMLは下記の通り：</p>
<pre class="brush: xml;">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; lang=&quot;ja&quot; xml:lang=&quot;ja&quot;&gt;
	&lt;head&gt;
		&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
		&lt;title&gt;&lt;/title&gt;
		&lt;meta http-equiv=&quot;Content-Script-Type&quot; content=&quot;text/javascript;&quot; /&gt;
		&lt;script type=&quot;text/javascript&quot; src=&quot;swfobject.js&quot;&gt;&lt;/script&gt;
		&lt;script type=&quot;text/javascript&quot;&gt;
			var flashvars = {};
			var params = {};
			params.wmode = &quot;transparent&quot;;
			params.allowscriptaccess = &quot;always&quot;;
			var attributes = {};
			swfobject.embedSWF(&quot;sample.swf&quot;, &quot;myAlternativeContent&quot;, &quot;800&quot;, &quot;600&quot;, &quot;9.0.0&quot;, false, flashvars, params, attributes);
		&lt;/script&gt;
	&lt;/head&gt;
	&lt;body&gt;
		&lt;div id=&quot;myAlternativeContent&quot;&gt;
			&lt;a href=&quot;http://www.adobe.com/go/getflashplayer_jp&quot;&gt;
				&lt;img src=&quot;http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif&quot; alt=&quot;Get Adobe Flash player&quot; /&gt;
			&lt;/a&gt;
		&lt;/div&gt;
	&lt;/body&gt;
&lt;/html&gt;</pre>
<h3>Lightbox用のライブラリを組み込み</h3>
<p>上記のベースHTMLのheadセクションに、Lightbox動作のためのjsファイルとcssファイルを組み込む下記の記述を追加。</p>
<pre class="brush: xml;">&lt;script type=&quot;text/javascript&quot; src=&quot;js/prototype.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/scriptaculous.js?load=effects,builder&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;js/lightbox.js&quot;&gt;&lt;/script&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;css/lightbox.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot; /&gt;</pre>
<h3>Lightboxを起動させるJavaScriptメソッドを追加</h3>
<p>Lightboxを直接起動させるJavaScriptのメソッドがないので、下記ページを参考にそのためのメソッドを追加。</p>
<p><strong><a href="http://blog.codefidelity.com/?p=16" target="_blank">Execute Lightbox Scripts From Flash at Codefidelity</a></strong><br />
（情報元：<strong><a href="http://d.hatena.ne.jp/minorio/20080927/1222513402" target="_blank">Flash から Lightbox を起動する方法 &#8211; minorio のプログラミング・メモ</a></strong>）</p>
<p>具体的に追加する内容は下記の通り。</p>
<pre class="brush: xml;">&lt;script type=&quot;text/javascript&quot;&gt;
function LightboxDelegate(url,caption) {
	var objLink = document.createElement('a');
	objLink.setAttribute('href',url);
	objLink.setAttribute('rel','lightbox');
	objLink.setAttribute('title',caption);
	Lightbox.prototype.start(objLink);
}
&lt;/script&gt;
</pre>
<p>最終的にできあがったhtmlは下記の通り。</p>
<pre class="brush: xml;">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; lang=&quot;ja&quot; xml:lang=&quot;ja&quot;&gt;
	&lt;head&gt;
		&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
		&lt;title&gt;&lt;/title&gt;
		&lt;meta http-equiv=&quot;Content-Script-Type&quot; content=&quot;text/javascript;&quot; /&gt;
		&lt;script type=&quot;text/javascript&quot; src=&quot;swfobject.js&quot;&gt;&lt;/script&gt;
		&lt;script type=&quot;text/javascript&quot; src=&quot;js/prototype.js&quot;&gt;&lt;/script&gt;
		&lt;script type=&quot;text/javascript&quot; src=&quot;js/scriptaculous.js?load=effects,builder&quot;&gt;&lt;/script&gt;
		&lt;script type=&quot;text/javascript&quot; src=&quot;js/lightbox.js&quot;&gt;&lt;/script&gt;
		&lt;link rel=&quot;stylesheet&quot; href=&quot;css/lightbox.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot; /&gt;
		&lt;script type=&quot;text/javascript&quot;&gt;
			//swfobject関係
			var flashvars = {};
			var params = {};
			params.wmode = &quot;transparent&quot;;
			params.allowscriptaccess = &quot;always&quot;;
			var attributes = {};
			swfobject.embedSWF(&quot;sample.swf&quot;, &quot;myAlternativeContent&quot;, &quot;600&quot;, &quot;400&quot;, &quot;9.0.0&quot;, false, flashvars, params, attributes);
			//LightboxDelegate関係
			function LightboxDelegate(url,caption) {
				var objLink = document.createElement('a');
				objLink.setAttribute('href',url);
				objLink.setAttribute('rel','lightbox');
				objLink.setAttribute('title',caption);
				Lightbox.prototype.start(objLink);
			}
		&lt;/script&gt;
	&lt;/head&gt;
	&lt;body&gt;
		&lt;div id=&quot;myAlternativeContent&quot;&gt;
			&lt;a href=&quot;http://www.adobe.com/go/getflashplayer_jp&quot;&gt;
				&lt;img src=&quot;http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif&quot; alt=&quot;Get Adobe Flash player&quot; /&gt;
			&lt;/a&gt;
		&lt;/div&gt;
	&lt;/body&gt;
&lt;/html&gt;</pre>
<h3>ExternalInterfaceで呼び出し</h3>
<p>次はFlash側の用意。sample.flaというファイル（ActionScript3）を用意、ステージ上にボタン用のMovieClipインスタンスを３つ配置し、それぞれbtn0, btn1, btn2という名前を付ける。sample.flaのドキュメントクラスとしてSampleクラスを指定。Sample.asの内容は下記の通り。</p>
<pre class="brush: as3;">package {
	import flash.display.MovieClip;
	import flash.events.MouseEvent;
	import flash.external.ExternalInterface;

	public class Sample extends MovieClip{
		public function Sample() {
			//Lightbox用の設定
			lightboxArray = new Array();
			lightboxArray[0] = {
				src:&quot;images/photo0.jpg&quot;,
				caption:&quot;写真その0&quot;
			};
			lightboxArray[1] = {
				src:&quot;images/photo1.jpg&quot;,
				caption:&quot;写真その1&quot;
			};
			lightboxArray[2] = {
				src:&quot;images/photo2.jpg&quot;,
				caption:&quot;写真その2&quot;
			};
			//ボタンの設定
			for (var i:uint = 0; i &lt; 3; i++) {
				var btn:MovieClip = this[&quot;btn&quot; + i];
				btn.id = i;
				btn.buttonMode = true;
				btn.addEventListener(MouseEvent.CLICK, onBtnClick, false, 0, true);
			}
		}

		public var lightboxArray:Array;
		public var btn0:MovieClip;
		public var btn1:MovieClip;
		public var btn2:MovieClip;

		//ボタン用メソッド
		public function onBtnClick(e:MouseEvent):void {
			var btn:MovieClip = e.target as MovieClip;
			var id:uint = btn.id;
			var src:String = lightboxArray[id].src;
			var caption:String = lightboxArray[id].caption;
			//LightboxDelegateメソッドを呼び出し
			ExternalInterface.call(&quot;LightboxDelegate&quot;,src,caption );
		}
	}
}</pre>
<p>これで完成！</p>
<h3>オマケ：IE7～8でのLightboxの表示バグフィックス</h3>
<p>Lightboxを使った縦に長いページをIEで閲覧した場合、ページをスクロールしてからLightboxを起動すると、Lightboxの背景（黒い透過）部分が途中で切れてしまう。これを回避するためにとりあえずやったのが<strong>lightbox.css</strong>の改造。具体的には#overlayのpositionをabsoluteからfixに変更（+IE6ではおかしくなってしまうので、スターハックを使ってabsoluteのまま）部分を下記のようにしました。</p>
<pre class="brush: css;">#overlay {
	position: fixed;
	top: 0;
	left: 0;
	z-index: 90;
	width: 100%;
	height: 500px;
	background-color: #000;
}
* html #overlay {
	position: absolute;
}</pre>
<p>以上、備忘録もかねて参考までに。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tonpoo.com/blog/2009/12/flash-externalinterface-lightbox/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tonpoo.com/blog/2009/12/flash-externalinterface-lightbox/" />
	</item>
		<item>
		<title>SWFObject 2 HTML and JavaScript ジェネレーター v1.2</title>
		<link>http://www.tonpoo.com/blog/2009/08/swfobject-2-html-and-javascript-v1-2/</link>
		<comments>http://www.tonpoo.com/blog/2009/08/swfobject-2-html-and-javascript-v1-2/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 11:08:14 +0000</pubDate>
		<dc:creator>tonpoo</dc:creator>
				<category><![CDATA[swfobject]]></category>

		<guid isPermaLink="false">http://www.tonpoo.com/blog/?p=519</guid>
		<description><![CDATA[swfobjectのプロジェクトサイトで提供されている「SWFObject 2 HTML and JavaScript generator v1.2」を、日本語環境で（というかTonpoo個人にとって）使いやすいよう一部カスタマイズした上で日本語化してみました！ 【SWFObject 2 HTML and JavaScript ジェネレーター v1.2】 （特に開発者サイドの許可をとってないんですが、MITライセンスで、コピーライト表記をソースコード中にそのまま残しているので、これで大丈夫なんでしょうか・・・。ちょっと不安。） ちなみに、オリジナル版からのカスタマイズ点は下記の通り。 文字コードの指定にShift_JISを追加。 文字コードのデフォルト値をutf-8に変更。 パブリッシュ方法のデフォルト値を「動的パブリッシュ」に設定。 HTMLテンプレートのデフォルト値を「XHTML 1.0 Transitional」に設定。 出力されるHTMLコードの言語系の属性の値をenからjaに変更。 出力されるHTMLコードのmeta要素などの出現順序を変更。 出力されるHTMLコードの中に、ドキュメント内でJavaScriptを使用していることを示すためのmeta要素を追加。 出力されるHTMLコードの中に記述される、FlashPlayerのダウンロードリンクのリンク先を、Adobeの日本語サイトに変更。 追記：当サイトでの公開について念のため確認し、了承をいただきました。に加えて、公式サイト内のWikiページからリンクを張って頂きました！]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/p/swfobject/">swfobjectのプロジェクトサイト</a>で提供されている「<a href="http://www.bobbyvandersluis.com/swfobject/generator/index.html">SWFObject 2 HTML and JavaScript generator v1.2</a>」を、日本語環境で（というかTonpoo個人にとって）使いやすいよう一部カスタマイズした上で日本語化してみました！</p>
<h3><a href="http://www.tonpoo.com/docs/swfobject_generator/">【SWFObject 2 HTML and JavaScript ジェネレーター v1.2】</a></h3>
<p><span style="text-decoration: line-through;">（特に開発者サイドの許可をとってないんですが、MITライセンスで、コピーライト表記をソースコード中にそのまま残しているので、これで大丈夫なんでしょうか・・・。ちょっと不安。）</span></p>
<p>ちなみに、オリジナル版からのカスタマイズ点は下記の通り。</p>
<ul style="text-align: left;">
<li>文字コードの指定にShift_JISを追加。</li>
<li>文字コードのデフォルト値をutf-8に変更。</li>
<li>パブリッシュ方法のデフォルト値を「動的パブリッシュ」に設定。</li>
<li>HTMLテンプレートのデフォルト値を「XHTML 1.0 Transitional」に設定。</li>
<li>出力されるHTMLコードの言語系の属性の値をenからjaに変更。</li>
<li>出力されるHTMLコードのmeta要素などの出現順序を変更。</li>
<li>出力されるHTMLコードの中に、ドキュメント内でJavaScriptを使用していることを示すためのmeta要素を追加。</li>
<li>出力されるHTMLコードの中に記述される、FlashPlayerのダウンロードリンクのリンク先を、Adobeの日本語サイトに変更。</li>
</ul>
<p>追記：当サイトでの公開について念のため確認し、了承をいただきました。に加えて、<a href="http://code.google.com/p/swfobject/wiki/generator">公式サイト内のWikiページ</a>からリンクを張って頂きました！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tonpoo.com/blog/2009/08/swfobject-2-html-and-javascript-v1-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.tonpoo.com/blog/2009/08/swfobject-2-html-and-javascript-v1-2/" />
	</item>
	</channel>
</rss>
