ページ 11

swfファイルの表示

Posted: 2007年12月17日(月) 10:30
by naka
file項目でswfファイルをアップロードしページ内に表示させたいのですが、ActiveX コントロールのアクティブ化のために実行ファイル名は外部jsファイル内で指定しています。
やはりCMSデザイナーを使って外部jsファイルに書き込みすることは不可能でしょうか?

Re: swfファイルの表示

Posted: 2007年12月17日(月) 18:04
by webmaster
 nakaさん、ご質問ありがとうございます。

 IEでのFlashのアクティブ化ですが、表示させたいswfをJavaScriptで表示させる
ことにより、可能です。
 例えば次のようなJavaScriptライブラリを使うことができるかと思います。

 http://allabout.co.jp/internet/javascri ... /index.htm

 ここの2ページ目に、使い方が載っています。
 head内でこのjsファイルを読み込んでおいて、swfを表示したい場所には、

コード: 全て選択

<script language="JavaScript">
<xsl:comment>
writeFlashHTML2('<xsl:value-of select="swffile" />','_height=96','_width=96','_quality=high');
//</xsl:comment>
</script>
 のようにしてみてください。

 他にも、こちらの方法も使えるかもしれません。
 http://youmos.com/reference/swfie.html

 お手数をおかけしますが、一度お試し頂ければ幸いです。
 尚、他のサイトに掲載されているスクリプトについてはユーザー様の
責任の範囲においてご利用下さい。m(__)m

回答ありがとうございます。

Posted: 2007年12月18日(火) 11:58
by naka
早速のご回答ありがとうございます。

試してみたのですが、flashがうまく再生されません。
以下のように記述しています。
スキーマ

コード: 全て選択

<?xml version="1.0" encoding="UTF-8"?>
<schema name="flash" caption="フラッシュ" >
<data name="swf" type="file" caption="フラッシュ" />
</schema>
デザイン

コード: 全て選択

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" encoding="EUC-JP" omit-xml-declaration="yes" />
<xsl:template match="/entry">
<script language="JavaScript">
<xsl:comment>
writeFlashHTML2('_swf=<xsl:value-of select="swf" />','_height=180','_width=800','_quality=high','_bgcolor=#000000');
//</xsl:comment>
</script> 
</xsl:template>
</xsl:stylesheet>
実行ファイルにはhead内にjavascript読み込みの記述もしてあり、背景色、幅高さについては指定とおり表示されるのですが肝心のflashが再生されません。。。

ご教授願います。

Re: 回答ありがとうございます。

Posted: 2007年12月19日(水) 13:11
by webmaster
 nakaさん、お手数をおかけしております。

 再生されないのは、Win-IEのみでしょうか。それともFirefoxなどでも
再生されないでしょうか。

 幅や高さなどが反映されているということは、埋め込み処理自体は成功
しているが、他の原因でFlashが表示されていない(セキュリティ関係など)
ということも考えられるかもしれません。

 一度、生成されたソースを引用して頂けると、何か分かるかもしれません。
(javascriptの部分)

Posted: 2007年12月19日(水) 14:00
by naka
度々お手数お掛けしてすいません。

以下生成されたコードです。

コード: 全て選択

<script language="JavaScript">
  <!--
writeFlashHTML2('_swf=cmsdesigner/dlfile.php?entryname=flash&entryid=00001&fileid=00000002&/index-head.swf','_height=180','_width=800','_quality=high','_bgcolor=#000000');
//-->
</script>
IE7及びFIREFOXどちらも表示されません。

Posted: 2007年12月19日(水) 14:11
by webmaster
 こちらこそ、何度も申し訳ありません。
 そして、原因が分かりました。ご紹介させて頂いたページのJavaScriptに問題、
というか、CMS Designerと相性の悪い問題がありました。
 swfファイル名として渡せるURLに「=」という文字列が含まれていると、
正しく動作しないようです。

 こちらで紹介しておきながら、申し訳ありません。m(__;)m

 flashタグの生成JavaScriptは他にもあると思いますので、少し探してみたいと
思います。今しばらくお待ち下さい。m(__)m

Posted: 2007年12月19日(水) 14:47
by webmaster
 実際にこちらで試してみて、正しく動くライブラリを見つけました。
 海外製のものですが、日本でも有名なライブラリです。

 SWFObject
 http://blog.deconcept.com/swfobject/

 使い方は、まず上記サイトの「view the raw javascript here.」のリンクから
スクリプトをダウンロードしてswfobject.jsという名前で保存し、ページのhead内
で読み込みます。

 次に埋め込みたい場所で、

コード: 全て選択

<div id="flash1"></div>
 のようなタグを用意しておき、その後に

コード: 全て選択

<script language="JavaScript" type="text/javascript">
<!--
  var so = new SWFObject("movie.swf", "mymovie", "400", "200", "8", "#336699");
   so.write("flash1");
//-->
</script>
 のように書けばOKです。
 new SWFObject( .... ) の部分のパラメータの内訳は、
var so = new SWFObject(swf, id, width, height, version, background-color [, quality, xiRedirectUrl, redirectUrl, detectKey]);
 とのことです。[]内は省略できます。

 so.write( ... ) の中は、divタグで指定したidと一致させて下さい。

 具体的には、デザイン定義側で次のようにしてください。

コード: 全て選択

<xsl:if test="file1/text()!=''">
	<strong>ファイル1をswfとして表示します。</strong>
	<div id="flash1">ここにFlashが表示されるはずです。</div>
	<script language="JavaScript" type="text/javascript">
		<xsl:comment>
			var so = new SWFObject("<xsl:value-of select="file1" />", "mymovie", "400", "200", "8", "#336699");
			so.write("flash1");
		//</xsl:comment>
	</script>
</xsl:if>
 javascriptを無効にしたブラウザも対象にしたい場合には、scriptの下に
noscriptタグを置いて、その中に通常のobject & embed タグを入れれば
OKです。

 以上、もしうまくいかなかった場合は、またご連絡頂ければ幸いです。

Posted: 2007年12月19日(水) 18:40
by 楽々
nakaさん、はじめまして。楽々と申します。
私も以前からswfファイルの自動更新&表示ができないものかと
ずーっと思っておりましたので、大変興味深く拝見しております。

早速こちらで試してみましたら、なんと大大大成功でした。 :D
http://www.rakuraku-up.com/live_h.php?eid=00006

ただひとつ、すでにもうnakaさんもお気づきかもしれませんが、
デザイン定義のCode中に不要なスペースが入っている場合
swfはうまく表示されないみたいですね。

nakaさん、webmasterさん、ありがとうございました!
そして、おそるべしCMSD :shock: