2つのブラウザ間で連動したFlashサイトの作り方

このQ&Aのポイント
  • 2つのブラウザ間で連動したFlashサイトを作るための方法を教えてください。
  • Flash CS3とWindowsXP SP3を使用して、2つのブラウザが小窓で立ち上がり、それぞれの小窓にFlashが表示されるようなサイトを作りたいです。
  • 特定のボタンを押すと、もう一方のFlashが反応し、指定のフレームが再生されるような仕組みを作りたいです。
回答を見る
  • ベストアンサー

2つのブラウザ間で連動(連携?)したFlashサイトを作りたい。

2つのブラウザ間で連動(連携?)したFlashサイトを作りたい。 現在IEユーザーを対象に、Flashサイトを作ろうと思っているのですが、イメージはあるもののどう作って行けばいいかわからないのでご質問させて頂きました。 制作環境は WindowsXP SP3 Flash CS3 です。 作りたいイメージとしては、エンターページ(普通のHTML)をクリックすると、2つのブラウザが小窓で立ち上がり、その2つの小窓にそれぞれFlashが表示されます。 仮にそれを(a)、(b)とします。 ここからがどう作って行けばいいか行き詰まっている点なのですが、 (a)のFlash内に表示されているボタンを押すと、(b)のFlashが反応し、指定のフレームが再生される・・・ と言う仕組みのものを作りたいと思っています。 できれば(b)のFlash内に表示されているボタンを押して、(a)も制御したいです。 こういうものを作りたい場合、どんなASを埋め込めばいいのでしょうか・・・。 よろしくご教授願います!

  • Flash
  • 回答数4
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.4

※字数制限に引っかかります(以前はこんなことなかったのに...)   というわけで回答を #1~#4 に分けます。 では #4 ◎BBB.swf(BBB.fla) -------------------------------------------------------------- // このタイムラインの再生を停止 stop(); // もし接続フラグが true でなければ以下を実行 // (ループ再生による重複(多重)実行を防ぐための if文) if (! connectFlag) { // // 接続フラグを true にする var connectFlag:Boolean=true; // // 受信LocalConnection「jyusinLC」を作成 var jyusinLC:LocalConnection = new LocalConnection(); // // コールバック関数があるオブジェクトをthisに指定 jyusinLC.client=this; // //関数goPlayを定義(引数:整数値) function goPlay(frame_num:int):void { // このタイムラインを引数フレームから再生開始 gotoAndPlay(frame_num); } // // 接続名「LCB」で受信側オブジェクトを準備 jyusinLC.connect("LCB"); // // if 終わり } // 送信用LocalConnection「sousinLC」を作成 var sousinLC:LocalConnection = new LocalConnection(); // // ボタン「btn」に対してクリック時に // 関数btnClickを実行するイベントリスナーを登録 btn.addEventListener(MouseEvent.CLICK,btnClick); // // 関数btnClickを定義 function btnClick(evt:MouseEvent):void { // 接続名「LCA」を準備したSWFにある関数goPlayを引数5で実行 sousinLC.send("LCA", "goPlay", 5); } -------------------------------------------------------------- ※ ↑Flash Player 9 以上で動作可能 ※字数制限に引っかかります(以前はこんなことなかったのに...)   というわけで回答を #1~#4 に分けます。 では #4 以上のようにして作成した「AAA.swf」と「BBB.swf」を一緒に開いて, ボタンをクリックすると, 「AAA.swf」の命令を「BBB.swf」が聞き, 「BBB.swf」の命令を「AAA.swf」が聞くのが確認できると思います。 HTMLに貼った状態で表示させても貼らない状態で起動させても結果は同じです。 また HTMLに貼った場合, 2つのHTMLに2つのSWFを別々に貼っても,1つのHTMLに2つのSWFを一緒に貼っても結果は同じです。 「Window名」や「ファイル名」などの指示も要りません。 「接続名」だけで対話しますから楽です。 また, 他の言語や外部ファイルなどを仲介することなく, SWFどうしが直接やりとりすることができるのでその点も非常に楽です。

onattou
質問者

お礼

無事に理想のサイトを作ることができました! 親切・かつ丁寧にご解説頂き、本当に感謝しております。 ありがとうございました!

その他の回答 (3)

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.3

※字数制限に引っかかります(以前はこんなことなかったのに...)   というわけで回答を #1~#4 に分けます。 では #3     ActionScript3.0 で各ファイルのメインのタイムライン(_root)のフレームに書くスクリプト例です。 ◎AAA.swf(AAA.fla) -------------------------------------------------------------- // このタイムラインの再生を停止 stop(); // もし接続フラグが true でなければ以下を実行 // (ループ再生による重複(多重)実行を防ぐための if文) if (! connectFlag) { // // 接続フラグを true にする var connectFlag:Boolean=true; // // 受信LocalConnection「jyusinLC」を作成 var jyusinLC:LocalConnection = new LocalConnection(); // // コールバック関数があるオブジェクトをthisに指定 jyusinLC.client=this; // //関数goPlayを定義(引数:整数値) function goPlay(frame_num:int):void { // このタイムラインを引数フレームから再生開始 gotoAndPlay(frame_num); } // // 接続名「LCA」で受信側オブジェクトを準備 jyusinLC.connect("LCA"); // // if 終わり } // 送信用LocalConnection「sousinLC」を作成 var sousinLC:LocalConnection = new LocalConnection(); // // ボタン「btn」に対してクリック時に // 関数btnClickを実行するイベントリスナーを登録 btn.addEventListener(MouseEvent.CLICK,btnClick); // // 関数btnClickを定義 function btnClick(evt:MouseEvent):void { // 接続名「LCB」を準備したSWFにある関数goPlayを引数2で実行 sousinLC.send("LCB", "goPlay", 2); } --------------------------------------------------------------

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.2

※字数制限に引っかかります(以前はこんなことなかったのに...)   というわけで回答を #1~#4 に分けます。 では #2   #1のようなものを作るとした場合, ActionScript2.0 で各ファイルのメインのタイムライン(_root)のフレームに書くスクリプト例です。 ◎AAA.swf(AAA.fla) -------------------------------------------------------------- // このタイムラインの再生を停止 stop(); // 受信LocalConnection「jyusinLC」を作成 var jyusinLC:LocalConnection = new LocalConnection(); // // 「jyusinLC」に関数goPlayを定義(引数:数値) jyusinLC.goPlay = function(frame_num:Number):Void { // このタイムラインを引数フレームから再生開始 gotoAndPlay(frame_num); }; // // 接続名「LCA」で受信側オブジェクトを準備 jyusinLC.connect("LCA"); // 送信用LocalConnection「sousinLC」を作成 var sousinLC:LocalConnection = new LocalConnection(); // // ボタン「btn」クリック時の動作を定義 btn.onRelease = function():Void { // 接続名「LCB」を準備したSWFにある関数goPlayを引数5で実行 sousinLC.send("LCB", "goPlay", 5); }; -------------------------------------------------------------- ◎BBB.swf(BBB.fla) -------------------------------------------------------------- // このタイムラインの再生を停止 stop(); // 受信LocalConnection「jyusinLC」を作成 var jyusinLC:LocalConnection = new LocalConnection(); // // 「jyusinLC」に関数goPlayを定義(引数:数値) jyusinLC.goPlay = function(frame_num:Number):Void { // このタイムラインを引数フレームから再生開始 gotoAndPlay(frame_num); }; // // 接続名「LCB」で受信側オブジェクトを準備 jyusinLC.connect("LCB"); // 送信用LocalConnection「sousinLC」を作成 var sousinLC:LocalConnection = new LocalConnection(); // // ボタン「btn」クリック時の動作を定義 btn.onRelease = function():Void { // 接続名「LCA」を準備したSWFにある関数goPlayを引数2で実行 sousinLC.send("LCA", "goPlay", 2); }; -------------------------------------------------------------- ※ ↑Flash Player 6 以上で動作可能 ※ ↑一応 ActionScript2.0 としていますが,   :Void や :Number の型指定を削除すれば   即 ActionScript 1.0 になります。

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

※字数制限に引っかかります(以前はこんなことなかったのに...)   というわけで回答を #1~#4 に分けます。 では #1 2つのSWFファイルを2つのHTMLに貼り付けて, その2つのHTMLをエンターページ(普通のHTML)から JavaScript の window.open で同時に別窓で開くところはよろしいですよね? その先の(その前の) Flash 作成部分の説明をします。 とは言っても, Flash CS3 は,ActionScript1.0~3.0 まで使えますから, 「どんなAS?」と問われましても, どのバージョンのコードを知りたいのかわかりません...。 とりあえず,ActionScript1.0~3.0のどれであっても 「AAA.swf」と「BBB.swf」の2つのSWFを作るものとします。 「AAA.swf」も「BBB.swf」もメインのタイムラインが複数フレームあって, 両方とも フレーム1 で stop(); させているものとします。 また, 両方ともその フレーム1 のステージ上にインスタンス名「btn」というボタンがあって, 「AAA.swf」にあるボタン「btn」クリックで「BBB.swf」を フレーム5 から再生させ, 「BBB.swf」にあるボタン「btn」クリックで「AAA.swf」を フレーム2 から再生させるものを作成するとします。 【図】↓を参考に。 ActionScript1.0~3.0のどれであっても LocalConnectionクラスを使用すれば, 複雑なことをしなくて良いと思います。

onattou
質問者

お礼

遅くなってしまってすみません! 今から熟読して、試していきたいと思います! 非常に丁寧な解説、ありがとうございます!!!

関連するQ&A

  • ブラウザーの指定

    Aというブラウザーからクリックで別ウィンドウ(B)が開きそこでフラッシュが再生、そのフラッシュ内のボタンをクリッックするとBブラウザーが閉じてAブラウザーにあたらしいURLが表示されるようにするにはそのようにしたらいいんでしょうか?

  • Flash未対応ブラウザに対する対処方法

    非常に抽象的な質問で申し訳ありません。 Flashを表示するためには<object>から</object>までを記述すると思いますが、 携帯端末等のブラウザはFlash未対応のため、 コンテンツが正しく表示されません。 そこで、Flash未対応ブラウザに対しては別のコンテンツを表示したいのですが、 方法がわかりませんでした。 簡単な対応方法で良いので、ご教授お願いいたします。

  • FLASH軽くしたい

    20フレームで作成したムービー(A)、30フレームで作成したムービー(B)があったとします。 これをシーン上に配置する時は、Aの分を20フレーム、Bの分を30フレームとって、 合計50フレームになりますよね? これを軽くすることってできないでしょうか? 何か豆知識でもいいので教えてください。 ※FLASH5です。

  • Youtubeとflashの連携方法教えて下さい。

    自分のホームページに動画をアップしていきたいのですが、動画の周りに絵を書いて(テレビの枠のような)その中のボタンで動画を制御できるようにできないかと考えています。 イメージ的にはページの中にテレビがあって訪問者がチャンネルを回すような感覚で再生でききれば良いなと思っています。 自分で調べた結果、YouTubeに動画をアップしてchromeless playerとFLASHを連携させて使えばうまくできるのではと考えているのですがそういったことは可能でしょうか? 可能ならばどういった方法でやれば書けるか教えてください。 私はhtml・javascript・Flashなどの簡単な知識しか持っていませんがこれからいろいろ勉強していきたいと考えているので難しくても一連の流れを教えてくださればありがたいです。 よろしくお願いします。 イメージが伝わりにくかったらすいません。

  • Flash8のユニコードについて。(mySQLとの連携)

    Flash8とPHPとmysqlの連携でアプリケーションを作っています。 mysqlで作ったデータベースからphpで日本語のテキストを読み込み、ActionScriptで表示させたいのですが、ユニコード(?)が違うらしく文字化けが起こってしまいます。(ムービープレビューの際) mysqlのユニコードShift-JISにしています。 Flashのユニコードを変更することはできるのでしょうか? また、文字化け解消のアドバイスなどあればお願いします。

    • ベストアンサー
    • Flash
  • DreamweaverとFlashとの連携について質問させて頂きます。

    DreamweaverとFlashとの連携について質問させて頂きます。 迷ったのですがこちらに質問させて頂きました。 普段はAdobeのCreative suite4でIllustrator(Ai),Photoshop(Ps),Aftereffects(AE) を使い印刷物やブライダルムービー等の製作をしています。 この度、自身のHPを製作するためにDreamweaverとFlashを勉強し始めました。 そこで以下の様なイメージを具現化するためにこの2つのソフトを どの様に使って製作すれば良いのか混乱しております。 ご意見をお聞かせ願えないでしょうか。 イメージ (1)一眼レフカメラで撮った様な遠近感のある3D空間に紙が一枚引いてある。 (2)紙の上に切り絵の家や小人がいて小人はアニメーションしている。  (可能であれば画像を荒らさない方向でAFで製作したアニメーションをベースにしたい) (3)遠くの方で音が鳴っている。 (4)任意のスポットをクリックするとそこに焦点が合い遷移して音が近くなる。 (5)再度別のスポットをクリックするとそこに焦点が合い遷移して音が遠くなる。 という漠然としたイメージで申し訳ないのですが… ・そもそも、Flashだけでアニメーションも製作するべきなのか。 ・Dreamweaverをベースに.swfファイルやFLVムービーファイルをHTMLで呼べるという  事だけは理解したが、どうすればそれが出来るのかHTMLの中にどのような形で入るのか。  又、スキンを全くなしで表示させる事も出来るのか。 ・AFで製作したaviを分割してFlashに読み込み、avi1フレーム目を待機ビジュアルに  1フレーム目以降をクリック後の素材として使えるものなのか。 ・Flで製作するのとaviを素材として使うのにデータの重さの違いは出るのか。 等が分からない部分です。 混乱しているので見当外れな、若しくは初歩的な質問をしているかもしれません。 どなたかお知恵を貸して頂けないでしょうか。 ご回答の程よろしくお願い致します。

  • CGIとFlash

    7並べをCGIで作成しました。 現在の状態だと、自分の持っている手持ちのカードのチェック欄にチェックを入れ、出すボタンを押したらブラウザが更新されてカードが既に出されている状態になる訳です。 Flashで作れば早いと思いますが私はFlashを使用した事が無いのでFlashで一から作るのは大変です。 なのでこれを全体では無く、基本の部分はCGI、カードを出す動作のみをFlashの様にアニメーションさせる方法はあるのでしょうか?。 あるのなら参考になるサイトなどを教えて下さい。 カードの出し方のイメージは以下のURLです。 http://misakirara.s296.xrea.com/flash/sevens.html 現在の動作↓ 手持ちのカードのチェック欄にチェックを入れる ↓ 出すボタンを押す ↓ ブラウザ更新が更新されてチェックが入れられたカードが場に出る。 理想(Flashの動作) 手持ちのカードをクリックする ↓ カードが場に出るアニメーションが流れカードが場に出る

    • ベストアンサー
    • CGI
  • ブラウザで見るときだけ動かなくなるFLASHなんです。

     いつもお世話になっております。  質問させてください。  一つのswfファイルがありそのファイルのムービーが 最後までいったところで別のswfファイルに自動的に飛ぶようにさせようと思い、その最初のswfファイルの最終フレームにアクションScriptで loadMovieNum("○○.swf", 0); と、書き込みました。 パブリッシュした後も正常に動き(次のswfファイルに移行し)、ドリームウィーバーでそのFLASHファイルをhtmlに埋め込み、再生を押してもちゃんと動くのに、 ブラウザでみると、なぜかa.swfが終わった時点で次のswfファイルに移行せず真っ白な画面になってしまうのです。。。  どうしてこうなってしまうのか、全く見当がつかず、またFLASHに詳しい知り合いもいないため、本当に 困ってしまいました‥。 どなたかご教授頂けたら本当にありがたいです。 すいません、よろしくお願いいたします‥。

    • ベストアンサー
    • Flash
  • 特定のフレームが再生されると、ブラウザのニューウィンドウを自動で開きたいです

    FLASH8をWindowxXPで使用しております。 FLASHで特定のフレームが再生された時に、 ブラウザの新しいウィンドウを自動で開きたいです。 ポップアップのようなイメージです。 特定のフレームに記述するアクションスクリプト2をどなたか教えてください。 宜しくお願いします!

    • ベストアンサー
    • Flash
  • Flash8でサウンドが鳴りません

    Flash初心者です。 ActionscriptでBGMを流し、ユーザーがプレイとストップの制御ができるようにしたいのですがうまくいきません。 1、ボタンA(レイヤー1)とボタンB(レイヤー2)を作り、文字(レイヤー3)とscript(レイヤー4)を組み合わせてオブジェクトを作りシンボル化しました。 2、ライブラリ内のwavサウンドをリンゲージしました("bgm") 3、レイヤー4の1フレーム目に this._sound = new Sound(); this._sound.attachSound("bgm"); this._sound.start(0,999); 4、ボタンAに on(release){ this._sound.start(0,999); } 5、ボタンBに on(release){ this._sound.stop(); } と記述してあります。 シーンプレビューでは音が鳴り制御もできるのですが、 上記のシンボルをシーンのレイヤーに配置してムービープレビュー すると音が鳴りません。 どうしてでしょう?? さっぱり分からず困り果ててます。 どなたかご伝授御願いします。

専門家に質問してみよう