Flashの質問なのですが、プラグインが入っていない場合に代替の画像(GIFなど)を表示させたいのですが、調べると色々なやり方がありどの様にするのが一番良いか悩んでいます。

どういう方法があって、何で良いのか、何で悪いのかを教えてください。
使っているソフトは、「Macromedia Flash MX2004」です。

回答の条件
  • 1人10回まで
  • 登録:2006/08/23 18:26:25
  • 終了:2006/08/26 22:49:34

ベストアンサー

id:ElekiBrain No.3

ElekiBrain回答回数255ベストアンサー獲得回数152006/08/24 13:55:09

ポイント100pt

>Netscape7.1で、確認したのですがメニューボタンがテキストになっていました。Flashに対応するのは、IEのみと言う事ですか?

これについて調査いたしました。間違いなく『Netscape Navigator』のFlashプラグインのバージョンが古いためでしょう。


var so = new SWFObject("hatena500overLink.swf", "hoLink", "300", "200", "8", "#FFFFFF");


の"8"という部分にご注目ください。ここは『FlashPlayer』のバージョンチェックを行うところです。もちろん、パブリッシュしたFlashバージョンに沿ったものでなくてはなりません(本来は下位互換性を持たせるために"5"-"7"でパブリッシュしたほうが良い。)。今回紹介したページでは『FlashPlayer8』専用としているため、『Netscape Navigator』デフォルトの状態では表示されなかったのでしょう。


この問題はプラグインをバージョンアップするか、パブリッシュ時のバージョンを落とすかによって解決します。バージョンアップを選択する場合は

『Adobe Flash Player ダウンロードセンター』

http://www.adobe.com/shockwave/download/?P1_Prod_Version=Sho...

を参照してください。しかし、今回のご質問は作成時における問題ですので、殆どの人に見てもらうことを考えるならば、前述のように、パブリッシュ時の『FlashPlayer』のバージョンを5-7までの範囲で限定すべきだと思います。なお、「間違いなく『Netscape Navigator』のFlashプラグインのバージョンが古いためでしょう」、と答えたのは、私の環境で『Netscape Navigator』の『FlashPlayer』のバージョンを上げてみたところ、動作したからです。もちろん同じ『Gecko』エンジンの『Mozolla』・『Mozilla Firefox』も同様です。


ブラウザ名 『SWFObject』が実装可能かどうか
『Internet Explorer』 パブリッシュ時の『FlashPlayer』バージョンと『SWFObject』側で『FlashPlayer』バージョンを落とせばデフォルト状態でも表示可。
『Netscape Navigator』 パブリッシュ時の『FlashPlayer』バージョンと『SWFObject』側で『FlashPlayer』バージョンを落とせばデフォルト状態でも表示可。
『Mozilla』 パブリッシュ時の『FlashPlayer』バージョンと『SWFObject』側で『FlashPlayer』バージョンを落とせばデフォルト状態でも表示可。
『Mozilla Firefox』 パブリッシュ時の『FlashPlayer』バージョンと『SWFObject』側で『FlashPlayer』バージョンを落とせばデフォルト状態でも表示可。
『Mozilla Firefox(Linux版)』 パブリッシュ時の『FlashPlayer』バージョンと『SWFObject』側で『FlashPlayer』バージョンを落とせばデフォルト状態でも表示可。
(※AdobeはLinuxに対して、『FlashPlayer7』までしかサポートしていない)
『Opera』 パブリッシュ時の『FlashPlayer』バージョンと『SWFObject』側で『FlashPlayer』バージョンを落とせばデフォルト状態でも表示可。
(※『FlashPlayer』のインストーラがMozilla系と一緒なので、一旦インストールするとMozilla系の『FlashPlayer』等を個別にインストールする必要性がない。ただしIEの『FlashPlayer』インストーラは別)。
『Safari』 未調査
『konqueror(Linux)』 実装不可
(というより、むしろファイルマネージャとしての側面が強く、ブラウザとして使うには無理がある。余談だが、なぜかnoscriptタグにバグ(?)があるようだ)


『IE』『Mozilla Firefox』『Opera9』はテスト済みです。『Mozilla』に関しては、今使っている人はごくわずかですし、『Mozilla Foundation』が配布を中止しているため、テストできませんでした。ただ、『Firefox』と同系統ですから、問題なく動くはずです。また、『Safari』はMac専用ですので、私の環境ではテストできませんでした。Linuxのブラウザ兼ファイルマネージャである『konqueror』でも表示不可。同じくLinux版の『Firefox』でも、『FlashPlayer7』しか現時点でサポートされておらず、『FlashPlayer8』の表示は不可能(これはAdobeの問題)。しつこいようですが、全ての環境でFlashを見ていただくには、最高でも『FlashPlayer7』までが最適なようです。


『SWFObject』の設定例:

var so = new SWFObject("hatena500overLink.swf(読み込むswfファイルを相対パスで指定)", "hoLink(embedタグ等で利用するID名)", "300(width・即ち横幅)", "200(height・即ち高さ)", "7(任意のバージョンで可)", "#FFFFFF(Flashの背景色)");


※なお、『Netscape Navigator』は英語版では8.1までリリースされています。


『Netscape』(英語版配布ページ)

http://browser.netscape.com/ns8/

『Modern Modoki Dock――NS8.1 - 日本語パック (Japanese Language Pack) 2.00――』(日本語パッチ配布ページ)

http://www7a.biglobe.ne.jp/~denshizuno/nb8-theme/jlp.html

id:black_kenchan

どうも、親切にありがとうございました。

色々、勉強になりました。

2006/08/26 22:48:44

その他の回答(2件)

id:ElekiBrain No.1

ElekiBrain回答回数255ベストアンサー獲得回数152006/08/23 18:41:25

以前私が答えた内容を引用します。

http://q.hatena.ne.jp/1156247513

「代替部品は自分で作成する必要がありますが、別ページを用意する必要はなく、Flashが表示できない場合、そこにあらかじめ用意されていた内容が表示されるというものです。」という部分に注目して下さい。

『SWFObject 1.4』

http://blog.deconcept.com/swfobject/swfobject1-4.zip

・他にも方法は色々ありますがこのJavascriptライブラリを導入するのが一番スマートであると思います。簡単に説明すると、アクティブ化問題をクリアし、更に、フラッシュのバージョンを自動判別し、更にFlashが表示できない場合は代替のDHTMLページを表示する、というものです。なお、代替部品は自分で作成する必要がありますが、別ページを用意する必要はなく、Flashが表示できない場合、そこにあらかじめ用意されていた内容が表示されるというものです。

さらに、驚くべき機能として、FlashをJavascript側から制御することも可能です。この方法はAdobe のリファレンスにも載っていますが『SWFObject』を用いた場合、より簡単に変数や文字列を渡すことが可能です。詳しい解説は以下のページにてご参照ください(日本語)。

『SWFObjectのドキュメントを日本語に翻訳してみたよ』

http://www.trick7.com/blog/2006/06/15-135235.php

なお、この方法は別に代替GIFのみならず、CSSで加工したHTMLページが表示されます。もっと分かりやすく説明しましょう。

例えば、フルFlashのページを作ったとします。この場合、Flashページが表示されなければ元の木阿弥です。ところが代替ページに飛ばすのもやや不安が残ります。そのページに検索エンジンから訪れてしまうと、フルFlashのページはその人にとってはなかったことになってしまいます。つまり、フラッシュのページとDHTMLのページは分けない方が良いということです。『SWFObject 1.4』を使うと、今あるDHTMLページをjavascriptで上書き挿入するため、Javascriptを切っている人からすれば単なるDHTMLページにしか見えませんし、javascriptをONにしている人から見れば、そのページはFlashページにしか見えません。このjavascriptを使った方法を自身で実装することも可能ですが、引用部にあるような多機能性までは望めません。『SWFObject 1.4』は便利ですので、私も実装しています。

id:black_kenchan

あまり知識が無いので、読んでみたのですが、少し難しく全てを把握できなかったと思いますが。

要するに「swfobject.js」を使えばよいと言う事ですか?

2006/08/23 19:19:34
id:ElekiBrain No.2

ElekiBrain回答回数255ベストアンサー獲得回数152006/08/23 19:46:26

それ以外でも方法はあります。

しかし、あえて『SWFObject 1.4』を使った方法のほうがスマートでよい、ということです。

それではページの説明に代わって私が説明します。

http://hatena500over.sokowonantoka.com/index.html

このURLは私が質問文字数が500文字をオーバーしたときのことを考えて作成したものです。大分ソースに改変を加えてあるため、以前の修正前のソースをご覧ください。

<div id="leftbox">
  <img src="QuestionOver.gif" width="300" height="200" alt="QuestionOver.gif" />
  <div class="setumei">
   このサイトは「人力検索」「アンケート」「いわし」での質問・回答が
   500文字をオーバーしたときにのみ使用されます。<br />
   (※「はてな」の公式ページとは基本的に関係ありません。管理人の個人的なサイトです)。
  </div>
  <div id="hatenahatena">
       <strong>※「はてな」をご存じない方へ:</strong><br />
   このページは「はてな」のサービス<br />
   「人力検索」「アンケート」「いわし」<br />
   の回答用・質問用に立ち上げたページです。<br />
   もし宜しければ「はてな」にご登録くださり、皆様の知識をお役立てください。
   質問にご回答下さった方にはポイントが進呈されます。
   ご参加の方は、以下のURLからユーザー登録(無料)を行ってください。<br />
     <a href="http://www.hatena.ne.jp/" target="_blank">はてなトップページへ</a>
  </div>
      <div id="flashmenu">
    <div id="mainmenu"><a href="index.html">国防についての質問</a></div>
    <div id="mainmenu"><a href="collage.html">ケツメイシPV回答</a></div>
    <div id="mainmenu"><a href="jstest.html">いわしでJavascript</a></div>
    <div id="mainmenu"><a href="FlashQ.html">Flashでプルダウンメニュー</a></div>
    <div id="mainmenu"><a href="FlashQ.html">トラックバックJavascript</a></div>
   </div>
  <script type="text/javascript" language="javascript">
  //ここからswfObjectの挿入
  var so = new SWFObject("hatena500overLink.swf", "hoLink", "300", "200", "8", "#FFFFFF");
  so.write("flashmenu");
  </script>
</div>
</div>
<div id="flashmenu">――</div>
so.write("flashmenu");

というところをよく見てください。レイヤー化したdivタグのid名flashmenuという部分に『SWFObject 1.4』の関数を挿入しているのが分かると思います。コツは、scriptタグを挿入したいタグの後ろに配置することです。HTMLは上から下まで順番に読み込まれてゆきますから、後に配置しなければ『SWFObject 1.4』が正常に動作しません。簡単に言うと、もともとあった<div id="flashmenu">のコンテンツをFlashに入れ替えている、というだけです。

なお、head部分に

<head>
<script type="text/javascript" src="swfobject.js(相対パスを記入)"></script>
</head>

として、『SWFObject 1.4』を読み込むのを忘れないようにしてください。

動作確認は

http://hatena500over.sokowonantoka.com/index.html

にて、javascriptをon・offに切り替えながらリロードしなおしてみると、分かりやすいかと思います。

id:black_kenchan

有難うございます。一応出来ました。

気になったのは、「Netscape」には、対応してないのでしょうか?

Netscape7.1で、確認したのですがメニューボタンがテキストになっていました。

Flashに対応するのは、IEのみと言う事ですか?

2006/08/23 20:33:28
id:ElekiBrain No.3

ElekiBrain回答回数255ベストアンサー獲得回数152006/08/24 13:55:09ここでベストアンサー

ポイント100pt

>Netscape7.1で、確認したのですがメニューボタンがテキストになっていました。Flashに対応するのは、IEのみと言う事ですか?

これについて調査いたしました。間違いなく『Netscape Navigator』のFlashプラグインのバージョンが古いためでしょう。


var so = new SWFObject("hatena500overLink.swf", "hoLink", "300", "200", "8", "#FFFFFF");


の"8"という部分にご注目ください。ここは『FlashPlayer』のバージョンチェックを行うところです。もちろん、パブリッシュしたFlashバージョンに沿ったものでなくてはなりません(本来は下位互換性を持たせるために"5"-"7"でパブリッシュしたほうが良い。)。今回紹介したページでは『FlashPlayer8』専用としているため、『Netscape Navigator』デフォルトの状態では表示されなかったのでしょう。


この問題はプラグインをバージョンアップするか、パブリッシュ時のバージョンを落とすかによって解決します。バージョンアップを選択する場合は

『Adobe Flash Player ダウンロードセンター』

http://www.adobe.com/shockwave/download/?P1_Prod_Version=Sho...

を参照してください。しかし、今回のご質問は作成時における問題ですので、殆どの人に見てもらうことを考えるならば、前述のように、パブリッシュ時の『FlashPlayer』のバージョンを5-7までの範囲で限定すべきだと思います。なお、「間違いなく『Netscape Navigator』のFlashプラグインのバージョンが古いためでしょう」、と答えたのは、私の環境で『Netscape Navigator』の『FlashPlayer』のバージョンを上げてみたところ、動作したからです。もちろん同じ『Gecko』エンジンの『Mozolla』・『Mozilla Firefox』も同様です。


ブラウザ名 『SWFObject』が実装可能かどうか
『Internet Explorer』 パブリッシュ時の『FlashPlayer』バージョンと『SWFObject』側で『FlashPlayer』バージョンを落とせばデフォルト状態でも表示可。
『Netscape Navigator』 パブリッシュ時の『FlashPlayer』バージョンと『SWFObject』側で『FlashPlayer』バージョンを落とせばデフォルト状態でも表示可。
『Mozilla』 パブリッシュ時の『FlashPlayer』バージョンと『SWFObject』側で『FlashPlayer』バージョンを落とせばデフォルト状態でも表示可。
『Mozilla Firefox』 パブリッシュ時の『FlashPlayer』バージョンと『SWFObject』側で『FlashPlayer』バージョンを落とせばデフォルト状態でも表示可。
『Mozilla Firefox(Linux版)』 パブリッシュ時の『FlashPlayer』バージョンと『SWFObject』側で『FlashPlayer』バージョンを落とせばデフォルト状態でも表示可。
(※AdobeはLinuxに対して、『FlashPlayer7』までしかサポートしていない)
『Opera』 パブリッシュ時の『FlashPlayer』バージョンと『SWFObject』側で『FlashPlayer』バージョンを落とせばデフォルト状態でも表示可。
(※『FlashPlayer』のインストーラがMozilla系と一緒なので、一旦インストールするとMozilla系の『FlashPlayer』等を個別にインストールする必要性がない。ただしIEの『FlashPlayer』インストーラは別)。
『Safari』 未調査
『konqueror(Linux)』 実装不可
(というより、むしろファイルマネージャとしての側面が強く、ブラウザとして使うには無理がある。余談だが、なぜかnoscriptタグにバグ(?)があるようだ)


『IE』『Mozilla Firefox』『Opera9』はテスト済みです。『Mozilla』に関しては、今使っている人はごくわずかですし、『Mozilla Foundation』が配布を中止しているため、テストできませんでした。ただ、『Firefox』と同系統ですから、問題なく動くはずです。また、『Safari』はMac専用ですので、私の環境ではテストできませんでした。Linuxのブラウザ兼ファイルマネージャである『konqueror』でも表示不可。同じくLinux版の『Firefox』でも、『FlashPlayer7』しか現時点でサポートされておらず、『FlashPlayer8』の表示は不可能(これはAdobeの問題)。しつこいようですが、全ての環境でFlashを見ていただくには、最高でも『FlashPlayer7』までが最適なようです。


『SWFObject』の設定例:

var so = new SWFObject("hatena500overLink.swf(読み込むswfファイルを相対パスで指定)", "hoLink(embedタグ等で利用するID名)", "300(width・即ち横幅)", "200(height・即ち高さ)", "7(任意のバージョンで可)", "#FFFFFF(Flashの背景色)");


※なお、『Netscape Navigator』は英語版では8.1までリリースされています。


『Netscape』(英語版配布ページ)

http://browser.netscape.com/ns8/

『Modern Modoki Dock――NS8.1 - 日本語パック (Japanese Language Pack) 2.00――』(日本語パッチ配布ページ)

http://www7a.biglobe.ne.jp/~denshizuno/nb8-theme/jlp.html

id:black_kenchan

どうも、親切にありがとうございました。

色々、勉強になりました。

2006/08/26 22:48:44
  • id:ElekiBrain
    ElekiBrain 2006/08/26 23:00:21
    あの、すみません。
    一応均等配分でもこちらは良かったのですが……。
    実は0ポイントってプロフィールの受け取り率に響くんですよ。
    (つまり、あまり受け取り率が低いと悪質回答者と思われる)
    しかし、悪意はないと思っていますので理解します(笑)。
    今度から、私に限らず0ポイントは余程の悪質回答者以外にはしない方がよいでしょう。0ポイントは悪質回答者へのトドメとして使いましょう。


    なお、私はこのことで怒ってませんのでお気になさらないよう。
  • id:ElekiBrain
    ElekiBrain 2006/08/26 23:08:36
    というか、むしろ「いるか」ありがとうございます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません