トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   サーバ関連【CGI・FCS・XMLSocket etc】
     PHP→Flashのデータ連携について
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
Shinohara
Åê¹ÆNo.6994
投稿日時: 2004-5-7 17:30
新米
居住地:
投稿: 2
使用環境:
Win2000,Flash MX2004
PHP→Flashのデータ連携について
Shinoharaといいます。よろしくお願いします。
開発環境はWin2000+Flash MXです。

Flashでゲームを作成しており、そのスコアをPHPに渡してDBに登録。
次回のプレイ時には登録してあるスコアをPHPからFlashに渡して、
スコアに応じてキャラの表示を切り換えるということをやろうとしています。

そこで、PHPからFlashへデータを受け渡すのが上手くいかなくて困っています。

PHPからFlashへのデータは変数[score]として、動的に書き出すHTMLソースの中で以下のように記述しています。
<param name="movie" value="***.swf?score=9999" />


これで取得した[score]をif文で振り分けることで、キャラの表示を切り換えようとしているんですが上手くいきません。
ムービー上に設置してあるテキストフィールドでは[score]の値を取得して表示できていますので、
全くデータが取得できていないということはないと思うんですが。

キャラの表示を切り換えるためのif文はscript専用のフレーム上に記述しています。
またvar score = 1000 ; のように直接設定した場合には、キャラの表示切り換えは上手くいっています。
if文中の変数[score]には "_parent" や "this._level0." などパスを指定してみたんですが上手くいきませんでした。


何か思い当たることがありましたら、アドバイスいただけたらと思います。
よろしくお願いします。
森 巧尚
Åê¹ÆNo.6998
投稿日時: 2004-5-7 18:33
モデレータ
居住地: 宝塚
投稿: 650
使用環境:
.5/CS4/Safari3
XP+2000//IE6
Re: PHP→Flashのデータ連携について
パスが正しくないためだと思われますね。

if文がある場所から、ルートにあるscoreまでのパスを正しくたどってみてください。
もし、2階層下のムービークリップのフレームスクリプトからであれば、「_parent._parent」と指定する必要があります。
もし、そのゲームが他のswfから読み込まれることがないのであれば、「_root.score」で確認してみてはいかがでしょう。
また、PHPで呼び出さずに、まずローカルで試してみてはいかがでしょうか。
ルートにscore変数を作って値を入れて、if文の場所で正しく見れるかどうかです。

#ご使用の環境は、プロフィールに記入するようにしましょう。


----------------
森 巧尚
http://www.ymori.com

西田慎吾
Åê¹ÆNo.7003
投稿日時: 2004-5-7 20:22
新米
居住地: 神奈川県藤沢市
投稿: 6
使用環境:
WinXP,Flash MX2004
MacOS9,Flash Mx
Re: PHP→Flashのデータ連携について
こんにちは。shingoと申します。
よろしくお願いします。

もしかしらたで申し訳ないのですが
外部から読み込んだ文字列の場合
一度String()やNumber()等で文字型を変換してから
使ってはどうでしょうか?

もしくはもう推奨されませんが==演算子をeq演算子にかえて
使用しても解決するかもしれません。

自分も同じようなことで悩んだ経験がありましたので
参考にでもなればと思いました。


----------------
------------------

西 田 慎 吾
<pino7777@hotmail.com>
横浜の新米デザイナー
----------------------

西田慎吾
Åê¹ÆNo.7004
投稿日時: 2004-5-7 20:22
新米
居住地: 神奈川県藤沢市
投稿: 6
使用環境:
WinXP,Flash MX2004
MacOS9,Flash Mx
Re: PHP→Flashのデータ連携について
こんにちは。shingoと申します。
よろしくお願いします。

もしかしらたで申し訳ないのですが
外部から読み込んだ文字列の場合
一度String()やNumber()等で文字型を変換してから
使ってはどうでしょうか?

もしくはもう推奨されませんが==演算子をeq演算子にかえて
使用しても解決するかもしれません。

自分も同じようなことで悩んだ経験がありましたので
参考にでもなればと思いました。


----------------
------------------

西 田 慎 吾
<pino7777@hotmail.com>
横浜の新米デザイナー
----------------------

多田 知之
Åê¹ÆNo.7012
投稿日時: 2004-5-8 1:00
新米
居住地: 東京都
投稿: 6
使用環境:
WinXP,Flash MX2004 Professional
Re: PHP→Flashのデータ連携について
多田といいます

取得した変数が文字として扱われているのだと思います
theScore=parseInt(score);
とか
theScore=Number(score);
などをして型変換するとうまくいくのではないかと


----------------
TOMOKOVE

makinux
Åê¹ÆNo.7121
投稿日時: 2004-5-10 14:16
半人前
居住地:
投稿: 50
使用環境:
WinXP;Flash MX2004 Pro;apache1.3;MySQL 4.0.13-nt;PHP Version 4.3.2
Re: PHP→Flashのデータ連携について
こんにちは。まきといいます。
違う方法論ですが、LoadVarsを使うと、どの階層からでもPHPから値をとって来れますよ。

ちなみに、
loadObj = new LoadVars();
loadObj.sql="sql文";
loadObj.sendAndLoad("sql.php", loadObj , "POST");
loadObj.onLoad = function(){
処理する内容
}
とかってやって、SQLだけ処理するPHPをつくると、
いちいちPHPを作る必要がなくて楽です
Shinohara
Åê¹ÆNo.7123
投稿日時: 2004-5-10 14:30
新米
居住地:
投稿: 2
使用環境:
Win2000,Flash MX2004
変数を文字列として取得していたのが原因でした。
たくさんのアドバイスありがとうございました。

皆さんのアドバイスをもとに、今朝から色々と試してみた所、
shingoさんや多田さんのおっしゃる通り変数を文字列として取得していたことが原因でした。

変数 [score] に数値の100をプラスしたところ、800と表示されているはずが、[800100]と表示されていましたから。
そこで parseInt(score) で数値に変換してみた所、正常に動作するようになりました。

テキストフィールドに表示されていたことで、変数が取得できているものだと思い込んでしまっていたのがまずかったです。
あらためて、アドバイスしてくださった皆さんありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops