• 締切済み

flash lite1.1 変数を受け取って表示

今flash lite1.1を使いPHPと連携させる作業を行っています。 その中で、変数を受け取ってflash上のダイナミックテキストでその変数の言葉を表示させるといったことがうまく出来ない状態です。 今試したことは、下記の方法でPHPからflashのダイナミックテキストを変数を指定して変更する方法です。1フレーム目にダイナミックテキストを配置し、そこに変数を記入するとうまくいくのですが、1フレーム目に配置してある、ムービークリップの中にある5フレーム目のダイナミックテキストに同じ変数を書いてもうまくいきません。 そこで、1フレーム目のダイナミックテキストがうけとった、内容を他の階層のダイナミックテキストで表示させることは可能でしょうか? loadVariablesNum等いろいろと試したのですが、うまくいきません>< わかる方がみえましたら、ぜひお願いします。 flash lite1.1とPHPの良い連携の仕方が他にあればそちらも教えていただけますと、助かります。よろしくお願いします。 http://libpanda.s18.xrea.com/commentary.txt

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

みんなの回答

noname#35109
noname#35109
回答No.1

回答するには 「commentary.txt」 の内容を理解したり, 「flash_file_format_specification.pdf」 を読んだりする必要があるのでしょうか? 私には「commentary.txt」の内容が理解できませんし,「flash_file_format_specification.pdf」も読んでいません。 つまり, SWF そのものをプログラミングで作成しようなどということは考えたことがありませんし, それが,ご質問とどう絡んでいるのかよくわかりません。 したがって,純粋かつ単純に, > 1フレーム目のダイナミックテキストがうけとった、内容を > 他の階層のダイナミックテキストで表示させる だけについて,方法例を書きます。 --- ファイル構造例 -----------------------  任意のフォルダ     ├ ○○.swf (本題のSWF)     └ mydata.php (○○.swf がロードするPHP) -------------------------------------- --- 「mydata.php」の表示内容例 ------------ aaa=あいうえお -------------------------------------- (↑日本語が入る場合 Shift-JIS です。) --- 「○○.swf」のムービーの構造 ------------  _root(_level0)   ├ ダイナミックテキスト:変数名 aaa   ├ ボタンインスタンス (インスタンス名なし)   └ my_mc(5フレームのMC)      └ ダイナミックテキスト:変数名 aaa -------------------------------------- まず, 無名のボタンインスタンスには次のように書きます(例です)。 -------------------------------------- on (release) { // レベル0 に外部 mydata.php ファイルをロード loadVariablesNum("mydata.php", 0); // my_mc というムービークリップに命令 tellTarget ("my_mc") { // 再生開始 play(); } } -------------------------------------- そして5フレームあるムービークリップmy_mc内のタイムラインのフレーム1には次のように書いておきます。 -------------------------------------- stop(); -------------------------------------- my_mc内のタイムラインのフレーム5には次のように書いておきます。 -------------------------------------- stop(); aaa = /:aaa; -------------------------------------- これで, _root に存在する aaa という変数名のダイナミックテキストにも, 「my_mc」 内のフレーム5に存在する aaa という変数名のダイナミックテキストにも, 「あいうえお」が表示されると思います。 結局, この回答の本題は最後の最後にある, aaa = /:aaa; だけです。 普通の Flash の ActionScript1.0 文法で書くと, aaa = _root.aaa; ということになります。 5フレーム分の時間(0.4秒程度?)があれば,大丈夫なような気はしますが, データが大きかったり,PHPの計算が遅い場合は, ムービークリップ内のフレームが 5 に達する前に_rootにデータが到着しないので, aaa = /:aaa; が有効にはたらきません。 _root の aaa が ""(空) の状態で,その値をムービークリップ内のaaaに代入しても, ムービークリップ内の aaa は ""(空) になるだけです。 もし,データの到着が遅れそうな場合は, ムービークリップを6フレームにして, 6フレーム目に gotoAndPlay(5); と書いておけば,フレーム5 と 6 がループ再生され, aaa = /:aaa; が繰り返し実行されますから そのうちいつかはデータが到着し,「あいうえお」が表示されるでしょう。 ///////////////////////////////////////////////////// ちなみに,上記説明のために作成したドキュメント (ムービークリップのタイムラインを6フレームにせず,gotoAndPlay(5); も書いていない状態)を, Flash Lite 1.1 の SWF にパブリッシュし, その SWF(354 バイト) をバイナリエディタで開いたら次のようになっていました。 46 57 53 04 62 01 00 00 70 00 09 C4 00 00 9C 40 00 0C 01 00 43 02 FF FF FF 3F 03 01 00 00 00 00 3F 0C 13 00 00 00 01 00 40 00 0A 5F 83 53 83 56 83 62 83 4E 00 00 00 02 00 7F 09 20 00 00 00 02 00 67 EC 3F C7 EC 0A 00 0D 38 01 00 18 01 00 00 00 FF 00 00 00 00 00 00 00 28 00 61 61 61 00 89 06 06 01 00 02 00 18 9D 86 5C 7F 09 20 00 00 00 03 00 67 EC 3F C7 EC 0A 00 0D 38 01 00 18 01 00 00 00 FF 00 00 00 00 00 00 00 28 00 61 61 61 00 FF 09 3F 00 00 00 04 00 05 00 3F 03 02 00 00 00 07 00 40 00 40 00 40 00 40 00 3F 03 16 00 00 00 07 96 05 00 00 61 61 61 00 96 07 00 00 2F 3A 61 61 61 00 1C 1D 00 89 06 06 01 00 03 00 15 D8 2C 40 40 00 00 00 BF 06 0F 00 00 00 26 02 00 04 00 18 C3 0F 28 6D 79 5F 6D 63 00 BF 00 1D 00 00 00 05 00 55 44 AF 68 45 F0 01 00 CC CC CC 00 10 15 55 16 85 E4 57 9C 2B E7 25 44 E1 A1 00 BF 08 3F 00 00 00 06 00 00 0A 00 0F 05 00 01 00 00 04 00 00 00 08 00 96 0C 00 00 6D 79 64 61 74 61 2E 70 68 70 00 96 09 00 00 5F 6C 65 76 65 6C 30 00 9A 01 00 80 8B 06 00 6D 79 5F 6D 63 00 06 8B 01 00 00 00 8A 06 06 04 00 06 00 1C 80 68 4E C0 40 00 00 00 ムービークリップのタイムラインを6フレームにして,gotoAndPlay(5); を書いた状態のドキュメントを, Flash Lite 1.1 の SWF(369 バイト ) にパブリッシュした場合,では次のようになりました。 46 57 53 04 71 01 00 00 70 00 09 C4 00 00 9C 40 00 0C 01 00 43 02 FF FF FF 3F 03 01 00 00 00 00 3F 0C 13 00 00 00 01 00 40 00 0A 5F 83 53 83 56 83 62 83 4E 00 00 00 02 00 7F 09 20 00 00 00 02 00 67 EC 3F C7 EC 0A 00 0D 38 01 00 18 01 00 00 00 FF 00 00 00 00 00 00 00 28 00 61 61 61 00 89 06 06 01 00 02 00 18 9D 86 5C 7F 09 20 00 00 00 03 00 67 EC 3F C7 EC 0A 00 0D 38 01 00 18 01 00 00 00 FF 00 00 00 00 00 00 00 28 00 61 61 61 00 FF 09 4E 00 00 00 04 00 06 00 3F 03 02 00 00 00 07 00 40 00 40 00 40 00 40 00 3F 03 16 00 00 00 07 96 05 00 00 61 61 61 00 96 07 00 00 2F 3A 61 61 61 00 1C 1D 00 89 06 06 01 00 03 00 15 D8 2C 40 40 00 3F 03 07 00 00 00 81 02 00 04 00 06 00 40 00 00 00 BF 06 0F 00 00 00 26 02 00 04 00 18 C3 0F 28 6D 79 5F 6D 63 00 BF 00 1D 00 00 00 05 00 55 44 AF 68 45 F0 01 00 CC CC CC 00 10 15 55 16 85 E4 57 9C 2B E7 25 44 E1 A1 00 BF 08 3F 00 00 00 06 00 00 0A 00 0F 05 00 01 00 00 04 00 00 00 08 00 96 0C 00 00 6D 79 64 61 74 61 2E 70 68 70 00 96 09 00 00 5F 6C 65 76 65 6C 30 00 9A 01 00 80 8B 06 00 6D 79 5F 6D 63 00 06 8B 01 00 00 00 8A 06 06 04 00 06 00 1C 80 68 4E C0 40 00 00 00 何かの参考になりましたら(ってこんなの何かの参考になります???)。

gori2262
質問者

お礼

noname#35109さん、ご丁寧に回答していただきありがとうございました。 上記のように変数に変数を渡す方法で、やってみたら、うまくいきました!! ほんとうにありがとうございました。

関連するQ&A

  • FLASH Lite1.1 外部テキストを表示する

    お世話になっております。 携帯サイト初心者です。アドバイスお願いします。m(__)m したいことは単純で、外部テキストa.txtをダイナミックテキストフィールドに表示させたいのです。 ★メインのTLにダイナミックテキストフィールドを作り、変数「text」としました。単一行でフォントサイズは10です。 ★テキストファイルは、「text=あいうえお・・・」で、シフトJISでswfと同じ階層に「a.txt」で保存しています。 ★メインのTLの1フレーム目に以下を入力しました。 loadVariablesNum("a.txt", 0); ●エミュレーターでは表示されていますが、携帯では表示されません。 (ソフトバンクの921SHとLite1.1対応ドコモ) FLASH CS3でFLASH Lite1.1にしています。 なにが悪いのか・・・ よろしくお願いします。

    • ベストアンサー
    • Flash
  • FLASHで外部テキストを表示するには

    こんにちは。 現在FLASHで、あるボタンをクリックすると吹き出しが出て、その吹き出しの中に外部テキストを表示させる、というものを作ろうとしています。 吹き出しはムービークリップシンボルで作成し、ダイナミックテキストブロックを配置したフレームに「loadVariablesNum("text1.txt", 0);」というアクションを追加しました。 そしてボタンには「on (release)」イベントを追加し、クリックすると吹き出しシンボルが表示されるようにしました。 その結果、ボタンをクリックすると吹き出しは表示されるのですが、テキストが全く表示されません。スクリプト内で指定した外部テキストのファイル名および階層は間違っていないようです。 このように、うまく外部テキストを読み込みできない原因として、何か考えられることはありますでしょうか? 説明が下手で申し訳ありませんが、ご教示いただけると助かります。 よろしくお願いいたします。

  • Flash lite 1.1で待受け作成

    Flash lite1.1で、 デジタル時計(HH:MM)のついた待受けを作りたいと思っています。 仕様としては背景で5枚の画像を1分ごとにループさせて、 画像ごとにデジタル時計を表示させる位置を変えたいと思っています。 (1枚目の画像の時はセンターに、2枚目の画像の時は下部に、という感じ) 現在、下記のような方法で書こうと思って作り始めたのですが 躓いてしまいましたので宜しければご助言をお願いいたします。 まず時計部分については、 ステージ直下に空のMC「myTime」を作って 表示用のレイヤーにダイナミックテキストを配置し、 変数 v_time をセットしました。 で、action用レイヤーに ---------- 1フレーム ---------- call("func"); gotoAndPlay(2); ---------- 2フレーム ---------- call("func"); ---------- 3フレーム ---------- gotoAndPlay(2); ---------- 4フレーム ---------- ●ラベル「func」 nowHour = fscommand2("GetTimeHours"); nowMin = fscommand2("GetTimeMinutes"); //10未満なら頭に0をつける if (v_hour<10) { v_hour = "0" add v_hour; } if (v_minutes<10) { v_minutes = "0" add v_minutes; v_time = nowHour add ":" add nowMin; と、書きました。 これで時計の表示だけはうまくいきました。 これとは別に、ステージ直下に画像表示用のムービークリップ 「myImage」を作り、1~5フレームに各画像を配置しました。 …と、ここまで自力で調べながらやってみたのですが この先がわからず困っています。 イメージとしては ・nowMin の値から myImage のフレーム位置を移動 また同様に ・nowMin の値から myTime のx,y座標を変更 という感じかな?と思っているのですが、 どのように書けばよいでしょうか? また、他に効率の良いやり方がありましたらご教授頂けませんでしょうか? 宜しくお願いいたします。

    • ベストアンサー
    • Flash
  • グローバル変数についてです

    Flash lite1.1でシューティングゲームを作成しています。 敵を倒すとスコアを加算する仕組みを現在作っているのですが・・・ クリア画面のフレームでスコアを表示したいのですが、普通の変数だとフレームをまたいで表示することができないんですよね・・・ そこでグローバル変数で宣言したいのですが、どうも表示されません。 とりあえず現在は 1フレーム scoreboxというムービークリップのフレームに_global.num++;と記述 2フレーム ダイナミックテキストでscorebox/:numと記述 こんな感じで記述しています。 グロバール変数の使い方を教えてください お願いします。

  • FLASH MX、変数の参照について

    _root上にaaaというMCとダイナミックテキストを配置、ダイナミックテキストには変数textを指定しています。aaa内のフレーム1にbbb = 1と記述、_rootのフレーム1にてtext = _root.aaa.bbbと記述してダイナミックテキスト上に反映させたいのですがうまくいきません。 FLASHを勉強し始めて1ヶ月程経つのに未だに変数の参照でつまづいてるのはかなり恥ずかしいのですが、よろしければアドバイスをいただけると幸いです。 よろしくお願いします。

  • Flash5 → PHP の変数受け渡し

    Flashのバージョンが古いせいか、PHPとの連携の参考になるサンプルが見付からず困っております。 Flash5からPHPに変数を渡したいのですが、ActionScriptの知識が乏しいため、どのようにしたら渡せるのかが判りません。 ターゲットパスなどはもっともシンプルなもので構わないので、ご教授いただけると助かります。 よろしくお願いします。

  • FLASH LITE1.1 制限時間を任意に設定

    FLASH LITE1.1でクイズの制限時間を任意に設定しようとしているのですがうまくいきません。 やろうとしていることは、 ユーザーが入力テキストに制限時間(秒)を入力し、その時間が経過したら特定のフレームに跳ぶ、 ということです。 具体的には次のようにしています。 入力テキストの変数を「lmt」としてルートの2フレームに配して停めておき、*キーでスタートさせます。 ルートの3フレームにMC「c_mc」を置き、ダイナミックテキストの変数「cnt」を設定して、「c_mc」の1フレームから10フレームをループさせることで秒数を表示し(10fps)ます。 そして、ルートの3フレームに次のASを書いています。 tellTarget("/c_mc"){play();} if(lmt == /:cnt){gotoAndPlay("tokutei");} if の条件がうまく書けていないかと思うのですが、evalを使ったり、""を使ったりしても結局うまくいきませんでした。 おわかりになる方、ぜひご教授いただきたいと思いますので、よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • flash lite 1.1 でテキストに文字が入力されたらその文字が

    flash lite 1.1 でテキストに文字が入力されたらその文字が数字であるかの確認をしたいのですが、テキスト入力の変化の取得はできるのでしょうか? フレームには stop(); を入れてある状態で、フレームは動かしてはおりません。

    • ベストアンサー
    • Flash
  • FLASHとPHPの連携

    はじめまして。 現在FLASHとPHPを連携させたサイトの検討をしているんですが、PHPで生成した変数をFLASHに持っていく方法がわかりません。そのままだと、PHP変数には$が付きますがそれだとFLASH側で読みません。PHP側からいちいちテキストで吐き出していたんでは処理が間に合わないんですが、どうしたらいいでしょうか?ご存知の方いらっしゃいましたら教えていただけると助かります。

  • HTMLからFlashへ変数を渡す方法で

    HTMLからFlashへ変数を渡す方法で、HTMLの「***.swf?hoge=10」のようにswfの後に?をつけて書き込む事で、HTMLからFlashへ変数データが渡せると記事で読んだのですが、上手く行きません。 flash側では、ダイナミックテキストを用意しインスタンス名をmTextとし、フレームから if(hoge){ mText.text = hoge; }else{ mText.text = "メッセージはありません"; } と書き、とりあえず、10 と表示させたいのですが、上手く行きません。 何が原因であるのか全く見当がつかずに困っております。 チェックすべき事やアドバイスなどありましたら書き込みをいただきたく思います。 よろしくお願いします。

専門家に質問してみよう