アプリ版:「スタンプのみでお礼する」機能のリリースについて

今flash lite1.1を使いPHPと連携させる作業を行っています。
その中で、変数を受け取ってflash上のダイナミックテキストでその変数の言葉を表示させるといったことがうまく出来ない状態です。

今試したことは、下記の方法でPHPからflashのダイナミックテキストを変数を指定して変更する方法です。1フレーム目にダイナミックテキストを配置し、そこに変数を記入するとうまくいくのですが、1フレーム目に配置してある、ムービークリップの中にある5フレーム目のダイナミックテキストに同じ変数を書いてもうまくいきません。

そこで、1フレーム目のダイナミックテキストがうけとった、内容を他の階層のダイナミックテキストで表示させることは可能でしょうか?
loadVariablesNum等いろいろと試したのですが、うまくいきません><
わかる方がみえましたら、ぜひお願いします。

flash lite1.1とPHPの良い連携の仕方が他にあればそちらも教えていただけますと、助かります。よろしくお願いします。

http://libpanda.s18.xrea.com/commentary.txt

A 回答 (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


何かの参考になりましたら(ってこんなの何かの参考になります???)。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/07/30 16:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!