ブラウザでswfファイルを表示する方法についての質問

このQ&Aのポイント
  • actionscript2.0とphpを使用して、ブラウザでswfファイルを表示しています。
  • actionscript側ではsendAndLoadメソッドを使用して、test.phpに値を送信しています。
  • test.phpで値は取得しているが、ページがロード(更新)されず、フレームが遷移しない問題が発生している。
回答を見る
  • ベストアンサー

actionscript2.0 とphp を用いてブラウザでswfファ

actionscript2.0 とphp を用いてブラウザでswfファイルを表示しています。 actionscript側では、 以下のようにsendAndLoadメソッドを用いて var send1 = new LoadVars(); test1.page = 1; test1.sendAndLoad("test.php",test1); send1.onLoad = function() {  ロードした際の処理 } test.phpに値を送信しています。細かく言えば flash上のボタンが押された後にsendAndLoad し,1を送信しています。 それに対しphpでは、 <html> <head> </head> <frameset rows="55%,*"> <frame name='bottom1' src="test.php"> <?php // Action ScriptからのPOSTデータの取得 $page = $_POST['page']; print("<frameset cols='62%,*'>"); if ($page == 1){ print("<frame name='bottom2' src='test1.php'>"); }else{ print("<frame name='bottom2' src='test2.php'>"); } ?> </frameset> </frameset> </html> 上記のようにPhp側では$pageを受け取り、1であればフレームで指定されているファイルを test1.phpとします。$pageが空であればtest2.phpを下フレームに表示しています。 そしてメインとなるtest.phpではswfファイルを表示していて、そのFLASHのボタンをクリックして、test.phpにsendAndLoadしています。 動作なのですが、sendAndLoadして、testp.phpで値は取得しているのですが、 ページがロード(更新)されません。なので下フレームがtest1.phpからtest2.phpに 遷移しません。試しにsendのみしてみると、新しくブラウザが開き、そのページが更新されています。 新しくブラウザを開かないでframeによるページ更新をする方法はないのでしょうか? ご教授願います。 以下はsendのみの場合です。 var send1 = new LoadVars(); send1.page = 1; send1.send("***.php", "bottom", "POST");

  • Flash
  • 回答数2
  • ありがとう数15

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

  • ベストアンサー
  • Hardking
  • ベストアンサー率45% (73/160)
回答No.2

ActionScript 2.0であればgetURLの使用は問題無いです。 JavaScriptの記述位置が間違っていたようです。 すいませんが、下記内容に修正して再試行して下さい。 後、test1.phpとtest2.phpが同じ場所にあること。 <html> <head> <script language="JavaScript"> <!-- function setIframe(p_param) { window.bottom1.location.href = "test.php" if (p_param == "1") { window.bottom2.location.href = "test1.php" } else { window.bottom2.location.href = "test2.php" } } // --> </script> <title></title> </head> <body> 途中省略 <IFRAME NAME="bottom1"> </IFRAME> <IFRAME NAME="bottom2"> </IFRAME> </body> </html>

kashika
質問者

お礼

申し訳ございません。 結局getURLに関して解決策が見つからなかったので、 他サイトで解決を試みます。 有難うございました。

kashika
質問者

補足

ご返信ありがとうございます。 javascriptの記述位置を<head>の部分に移行しましたが、 変化はありませんでした。 試しにdocument.writeを使ってjavascriptが正常に動いているかどうか 確かめましたが、正常に出力されていました。 またFlashファイルでflashのみをデバックをかけた場合にも getURLまでは動いていました。 しかし、getURLで関数に値が渡っていないのか、 それとも非同期的にブラウザが更新されないのか、 ボタンを押してもtest1,2ファイルは表示されませんでした。 ご迷惑をおかけして申し訳ありません。 今後ともアドバイス願います。

その他の回答 (1)

  • Hardking
  • ベストアンサー率45% (73/160)
回答No.1

当FLASHアプリが実行されているブラウザページ本体(同じHTMLファイル)に FLASHを表示するエリアとインラインフレームの表示エリアを配置するべきです。 【処理例】 //フラッシュボタン押下時 (ActionScript) on (release) { //JavaScriptのsetIframe関数(自作)を呼ぶ。パラメータは1または2 getURL("javascript:setIframe('1');"); } (JavaScript) <script language="JavaScript"> <!-- function setIframe(p_param) { window.bottom1.location.href = "test.php" if (p_param == "1") { window.bottom2.location.href = "test1.php" } else { window.bottom2.location.href = "test2.php" } } // --> </script> <html> <body> 途中省略 <IFRAME NAME="bottom1"> </IFRAME> <IFRAME NAME="bottom2"> </IFRAME> </body> </html>

kashika
質問者

お礼

ご返信ありがとうございます。 補足に書き忘れたのですが、 何も実行されないということは、<IFRAME NAME="bottom2">の所が 真っ白になってなにも表示されないということです。

kashika
質問者

補足

ご返信ありがとうございます。 言われた通り当り、FLASHアプリが実行されているブラウザページ本体(同じHTMLファイル)に FLASHを表示するエリアとインラインフレームの表示エリアを配置しました。 まずtest.phpを以下のように <script language="JavaScript"> <!-- function setIframe(p_param) { if (p_param == "1") { window.bottom2.location.href = "test1.php"; }else{ window.bottom2.location.href = "test2.php"; } } // --> </script> <html> <body> FLASHを表示するぺージ <IFRAME SRC="FLASH.php" width="***" height="***"> </IFRAME> <IFRAME NAME="bottom2"> </IFRAME> </body> </html> FLASH側では ボタンを二つ作成し、それぞれを on (release) { getURL("javascript:setIframe('1');"); } や on (release) { getURL("javascript:setIframe('2');"); } と記述したのですが、動作させてみると、test.php上では、 ボタンを押しても何も実行されません。getURLで関数を呼んでいないようです。 getURLに関して調べましたが、ちょっと悩んでしまっている状態です。 FLASH、HTMLファイルなど全て同じフォルダに置いています。 すみませんが、解決策などありませんでしょうか?

関連するQ&A

  • FlashからPHPへの変数の渡し方について

    初めまして。beterugiusと申します。 ご質問したいのですが、 まず、上下2フレームのindex.phpファイルがあります。 FLASHファイル(top_image.fla)は、シングルフレームのjpegイメージ(三枚の画像をPhotoShopで合成して、一枚のイメージにしてある。)です。 その.flaファイルを書き出した、.swfコンテンツ上をマウスが移動 すると、コンテンツ上のどの部分にマウスがあるかで、下フレームのTHMLが切り替わるようにしたいので、top_image.swf から、index.phpに対して、GETメソッドでページ番号の変数自身を 渡したいのですが、実際にFLASHコンテンツ上をマウスで動かしてみると、ブラウザのアドレス欄に、GETメソッドのクエリー文字列の「?」 だけは追加されているのですが、肝心の変数が渡されておらず、 下フレームのHTMLも切り替わりません。 どうすればちゅんと動くのか、どなたかご回答いただけないでしょうか? -------------------------------------------------------------- 「top_image.fla」 var sendObj:LoadVars = new LoadVars(); var page:Number; function onMouseMove(){ var x:Number = top_image._x; // グラフィックの中心座標 var y:Number = top_image._y; if( 0 <= y && y <= 316 ){ if( 0 <= x && x <= 255 ){ page = 1; sendObj.send("../php/index.php", "page", "GET"); } else if( 256 <= x && x <= 512 ){ page = 2; sendObj.send("../php/index.php", "page", "GET"); } else if(513 <= x && x <= 766 ){ page = 3; sendObj.send("../php/index.php", "page", "GET"); } } } -------------------------------------------------------------- 「index.php」 <html> <head><title>ActionScript2.0</title> <meta http-equiv="content-type" content="application/x-www-form-urlencoded"> </head> <frameset rows="350,*"> <frame name="top" src="../html/top.html"> <?php // Action ScriptからのPOSTデータの取得 $page = $_GET['page']; switch($page){ case 1: print("<frame name='bottom' src='../html/bottom1.html'>"); break; case 2: print("<frame name='bottom' src='../html/bottom2.html'>"); break; case 3: print("<frame name='bottom' src='../html/bottom3.html'>"); break; } if(is_null($page)){ // $page変数の中身がNULL(未定義)の場合 print("<frame name='bottom' src='../html/blank.html'>"); } ?> </frameset> </html> -------------------------------------------------------------

    • ベストアンサー
    • Flash
  • ActionScriptとphpの連携について

    ActionScriptとphpの連携について質問があります ActionScriptで受け取った値をphpに送り、その値をphp(htmlに埋め込み)で表示させたいと考えています。 動作としましては、 ・あらかじめテキストボックスに文字列が入力されている ・ボタンをクリックする ・別ウィンドウが出現(getURLでphpファイルを表示)テキストボックスに入力されていた文字列が表示される ・phpのファイルでラジオボタンで項目を選択し送信ボタンを押す ・MySQLに接続、ActionScriptで受け取った値とラジオボタンで受け取った値をまとめてデータベースに保存 というものにしたいです。 ボタンをクリックするまではすべてFlashで実現させています。 Flash→php→Flashという流れで値を表示させる方法はわかるのですが、Flash→phpで表示させることは可能でしょうか もし可能であれば、どのように実現したらよろしいでしょうか 現在はLoadVarsクラスのLoadVars.sendAndLoad()を使っています ActionScriptは2.0です 至らないところもございますが、素早い回答をお願いいたします

    • ベストアンサー
    • Flash
  • フレームで指定している送信先にPOSTで値を送ることは可能でしょうか?

    <frameset rows="120, *,">    <frame src="page1.html" name="frm1">    <frame src="POSTで値を送信" name="frm2"> </frameset> という感じで、フレームの1つに値を渡したいと思っています。 データ量が多いためGETでは渡せず困っています。 フレームで指定した先に、POSTで値を渡すことは可能でしょうか? よろしくお願いします。

    • ベストアンサー
    • HTML
  • 1つのformで複数のactionをボタン1つで

    質問です。 1つのformで複数のactionを1つの送信ボタンで実行したいと思っています。 やりたいことは、1つのframeから他の2つのframeにデータを渡すことです。 フレームは以下のように3つに分かれています。 <frameset cols="60%, 40%"> <frame name="test1" src="xxxx.php"> <frameset rows="50%, 50%"> <frame name="test2" src="yyyy.php"> <frame name="test3" src="zzzz.php"> </frameset> </frameset> xxxx.php内のデータをyyyy.php, zzzzphpの2つに渡したいです。 <script language="javascript"> function send(){   document.form1.target = "test2";   document.form1.action = "yyyy.php";   document.form1.submit();   document.form1.target = "test3";   document.form1.action = "zzzz.php";   document.form1.submit(); } </script> <form name ="form1" method="POST" action="yyyy.php"> <input type="hidden" name="string" value="string" > <input type="button" value="送信" onClick="send()"> </form> 現在、上記のように試したり、過去の質問【一つのformから複数のactionを実行】url:http://okwave.jp/qa/q4234502.htmlを参考にしていますがうまくいきません。 わかる方アドバイスお願い致します。

  • POSTに関して

    最上位で取得したクッキーの情報を、以下のような形でサブ画面に 送ろうと考えていますが、そもそも以下のような記述はできないのでしょうか。。。 他に方法があれば教えて下さい。 よろしくお願いします。 <?php $cookie=$_COOKIE['test']; ?> <html> <head> <title>表</title> </head> <frameset method="POST" cols="20%,80%"> <frame name="header" scrolling="no" noresize target="main" src="A.php"> <?php print("<frame name='sub' src='B.php' target='sub'>\n"); print("<input type='hidden' name='sub1' value='$cookie'>\n"); ?> </frameset> </html>

    • 締切済み
    • PHP
  • ActionScriptとPHPでメール送信

    【flashmail.as】 LV1 = new LoadVars(); LV1.onLoad = function(success){ gotoAndStop(2); // 2フレーム目に移動 } var1 = ""; var2 = ""; var3 = ""; gotoAndStop(1); on(press){ if(var1==""){err=err+"名前が入力されていません!\n");} if(var2==""){err=err+"メールアドレスが入力されていません!\n");} if(var3==""){err=err+"メッセージが入力されていません!\n");} LV1.var1 = var1; LV1.var2 = var2; LV1.var3 = var3; if(err==""){ LV1.sendAndLoad("./flashmail.php", LV1, "POST"); } } 以上のようなactionscriptファイルと、FLAHファイル本体flashmail.flaの2フレーム目に 同様の文を、アクションとして、書いてます。もちろん、モーションファイルflashmail.swfも書き出して、FTPサーバーの同じディレクトリに置いています。 動きとしては、メールフォームに入力して、送信ボタンを押すと、ありがとうございました。 と表示され、そのあと、flashmail.phpのmb_send_mail() でメール送信するはずなのですが、メールが到着しません。 flashmail.phpの内容も下記に表示します。 【flashmail.php】 <?php $subject = $_POST['var1']; $to = $_POST['var2']; $message = $_POST['var3']; var_dump($message); $from = "~"; $subject = mb_convert_encoding($subject, "utf-8", "auto"); // utf-8にエンコード $message= mb_convert_encoding($message, "utf-8", "auto"); mb_internal_encoding("UTF-8"); $res = mb_send_mail($to, $subject, $message, $from); header("Location: flashmail.html"); ?> どうすれば、メールが到着するようになるのか、ご指導お願いします。

    • ベストアンサー
    • PHP
  • 画面遷移に関して

    現在、ある2つの画面を表示させる為に以下のような記述で画面を表示させて います。 本来はframeset を使えば問題ないですが、なぜか表示できない為、やむなくこの 方法で表示させていますが、その際に、frameset でできる名前付けのような事は できないのでしょうか? 《現在の書き方》 <table> <tr> <td valign="top" width="100%"> <?php $_GET['ps']=$psw; $_GET['emp']=$id ;include("\TEST\TEST_CALEN.php"); ?> </td> </tr> <tr> <td valign="bottom" width="100%"> <?php include("\TEST\TEST_INDEX.html"); ?> </td> </tr> </table> 上記のプログラムで、下記のname = “header” 等の名前付けがしたいです。 初歩的な事で申し訳ありませんが、教えて下さい。 よろしくお願いします。 ※参考例  下記のような形がよかったのですが、なぜか表示されず、、、 <frameset rows="30,70"> <frame name="header" scrolling="no" noresize target="main" src=<?php print("\TEST\TEST_CALEN.php?ps=".$psw ."&emp=".$id); ?>> <frame name="main" src="\TEST\TEST_INDEX.html"> </frameset>

    • ベストアンサー
    • PHP
  • ActionScript2.0とPHPの連携

    下記のスクリプトをflashプレーヤー8.0、Action Script2.0 でムービーの書き出しを行って、実行すると 合計の計算結果蘭に「undefined」と表示され、 合計値がちゃんと表示されません。 どこが間違っているのでしょうか? 【test1.fla】 (scriptレイヤー) //Shift-jisを使う //System.useCodepage = true; //loadvarsobject作成 LV1=new LoadVars(); //送信が成功した場合 LV1.onLoad = function(success){ //LoadVarsオブジェクトに得られた計算結果を反映させる out1=LV1.out1; } gotoAndStop(1); (mainレイヤー) //送信ボタンが押されたとき on (press) { //LoadVarオブジェクトに変数をセット LV1.in1=in1; LV1.in2=in2; LV1.in3=in3; LV1.in4=in4; //LoadVarオブジェクトの内容をphpスクリプトへ送信する LV1.sendAndLoad("test1.php",LV1,"POST"); } 【test1.php】 <?php //Flashから送られてくる変数を受け取る $in1=$_POST['in1']; $in2=$_POST['in2']; $in3=$_POST['in3']; $in4=$_POST['in4']; //合計を求める $result=$in1+$in2+$in3+$in4; var_dump($result); //Flashに合計を伝える echo 'out1='.$result; //送信されてきた変数をログファイルに残す $fp=fopen("log.txt","ab"); fputs($fp,"$in1,$in2,$in3,$in4\n"); fclose($fp); ?>

  • LoadVarsでPHPから変数を読み込む件について

    質問させていただきます。 PHPで、変数$usernameに入っている値をActionScriptに渡したいのですが、上手くいきません。 ■PHP側 echo "name=".$username; ■ActionScript側 var username: LoadVars = new LoadVars(); username.onData = function(src) {  if (src == undefined) {   trace("Error loading content.");  }  trace(src); }; username.load("./view.php"); trace(username.name); 試しに上記のような形で実行してみました。 onDataの中の「trace(src)」の出力によると、PHPを読み込んではいるのですが、echoの部分だけではなく、<?php ~ ?>のように、PHP全体を読み込んでしまっていることがわかりました。(しかも何故か1行ずつ行間を空けた状態で…) ちなみに一番最後の「trace(username.name)」は何も出力されませんでした。 Webで調べると、例えばPHP側で「echo "name=admin";」のように、直接値を表示しているものばかりのような気がしました。 私のような場合、欲しい部分だけをloadするにはどうすればよいでしょうか。どうぞご教示願います。

  • フレーム内から親ウィンドウにロケーション?

    こんにちは。 どなたかよい解決策をご存知でしたら教えてください。 フレームで切られたウィンドウの一部のフレームから、PHP(ver.3)でページをロケーションで呼ぶと、そのフレームの中に呼んだページが表示されてしまいます。 JavaScriptは使わずに、親ウィンドウにページを表示させることは出来ないでしょうか、、、 よろしくお願いいたします。 以下はイメージサンプルです。 ■frame.html <html> <head><title>フレームセット</title></head> <frameset cols="100,*" frameborder="NO" border="0" framespacing="0"> <frameset name="left" rows="60,*" frameborder="NO" border="0" framespacing="0"> <frame name="a" noresize scrolling="NO" src="./test1.html"> <frame name="b" noresize src="./test2.html"> </frameset> <frameset name="right" rows="44,*" frameborder="NO" border="0" framespacing="0"> <frame name="c" noresize scrolling="NO" src="./test3.html"> <frame name="d" noresize src="./locat.php3"> </frameset> <noframes> このページはフレーム対応のブラウザでご覧ください。 </noframes> </frameset> </html> ■locat.php3 <? header("Location: ./test4.html"); exit(); ?> ■test1.html <html> <head><title>テスト1</title></head> <body> 左上 </body> </html> ■test2.html <html> <head><title>テスト2</title></head> <body> 左下 </body> </html> ■test3.html <html> <head><title>テスト3</title></head> <body> 右上 </body> </html> ■test4.html <html> <head><title>テスト4</title></head> <body> このページをウィンドウ全画面に表示 </body> </html>

    • 締切済み
    • PHP

専門家に質問してみよう