Flash as3 は PHP と通信します

WBOY
リリース: 2016-06-23 14:31:48
オリジナル
899 人が閲覧しました

現在、Flash はさまざまな面でますます幅広く使用されており、Flash はそれ自体の豪華な効果に重点を置くだけでなく、as3、Flash、The の登場により、より強力な機能を実現するために外部プログラムとデータを交換する必要があります。外部とのやり取りの方法はますます便利かつ合理的になってきています。今日は、as3 とバックグラウンド データの間の相互作用について説明します (ここでは as3 php アーキテクチャが選択されており、他の構成にも同じことが当てはまります)。

as3 では、元のloadVars メソッドは廃止され、バックグラウンド データと対話するために一連のクラスが使用されます。これらのクラスは、URLLoader、URLLoaderDataFormat、URLStream、URLVariables です。
URLLoader クラスはオリジナルのloadVarsに似ており、テキスト、バイナリデータ、XML、URLデータ、その他の情報をロードするための強力なツールです。 URLLoader は URLRequest を構築パラメータとして受け入れ、load メソッドを使用してデータをロードします。 URLLoder は、loadVars とは異なり、監視することもできます。簡単な例は次のとおりです。

1. /////////actionscript コード/////// / //////////////////////////////////
2. URLLoader を宣言します
3. :URLLoader = new URLLoader();
4. //ロード完了イベントをリッスンする
5.loader.addEventListener(Event.COMPLETE,loaded); //イベントに対応する関数がロードされました(e:Event) ){
8.trace(loader.data);
9. // このデータは php からのものです
10. }
11. //loader.load("test .php" ));

1. // /////////////////test.php コード///////////////// ///// ///////////
2. 3. //変数を宣言し、文字列に代入します
4. このデータは php です。 !';
5 . //この変数をフラッシュに出力します
7. ?>
上記の例から、as3 とバックグラウンドの間のやり取りがいかに簡単であるかがわかります。フラッシュをバックグラウンドで送信してデータを返す方法は 1 つだけです。この時点で、次のようにコードを変更できます:

1. //actionscript コード
2. varloader:URLLoader = new URLLoader(); 3.loader.data={message:"hello im flash!"};
4.loader.addEventListener(Event.COMPLETE,loaded);
5.関数loaded(e:Event){
6.trace(loader.data); //これはフラッシュです:
8. }
9.loader.load("test.php"));
1. //test.php コード//
2. $flashData = $_POST' ];
4. echo "これは、$flashData" です。
出力コードを見てください。はい、情報は php に送信されません。loadVars を使用してデータを送信しようとしていますが、これは as3 では当てはまりません。データがダウンロードされない場合、URLLoader のデータは初期化されます。ロードされた、それは null に等しい、つまり、送信されるデータに関係なく、受信したデータのみが含まれます。それでは、as3 でデータをバックグラウンドに送信するにはどうすればよいでしょうか。 URL変数を使用します。 URLVariables を使用すると、フラッシュ プログラムとバックグラウンド プログラム間で変数を転送できます。As3 ではデータの送信と受信が分離されており、1 つのクラスがすべてを処理するわけではありません。では、この URLVariables は送信するデータをどのように送信するのでしょうか。

URLLoader のドキュメントを調べたことがあるかもしれませんが、それに関連するものは何も見つかりませんでした。はい、URLLoader は URLVariables に関連していませんが、URLRequest には http リクエスト全体のすべての情報が含まれているため、URLLoader には URLVariables が含まれています。 send データはここに配置する必要があります。URLRequest にはオブジェクト タイプ パラメータを受け入れるデータ属性があります。これが送信したいデータです。同時に、URLRequest が http リクエストの送信に使用されるメソッドも管理していることに気づくかもしれません。そのメソッド属性は文字パラメーター (post または get) を受け入れます。それでは、どのように機能するかを見てみましょう:
1. //actionscript コード
2. varloader:URLLoader()
3. //URLRequest を宣言します
4. test.php");
5. //送信メソッドをPOSTに設定する
6. url.method = URLRequestMethod.POST;
7. // URLVariablesを宣言する
8. var value:URLVariables = new URLVariables();
9. //送信する情報を設定します
10.values.message="hello im flash!"
12.loader.addEventListener(Event.COMPLETE,loaded);13. 関数がロードされました(e:Event){
14. トレース(loader.data);
15. これはフラッシュです
16. }
17.
1. //test.php コード//
2. $flashData = $_POST['message']
4. echo "これはフラッシュです:$flashData"; ?>
どうですか、
、as3とバックグラウンド間のデータ送信も実現できてとても便利ですね?さて、私たちのプログラムは双方向でデータを操作できますが、これは単なる単純なデータです。構造を持ったデータを送信したい場合は、(as2 に詳しい人は、loadVars がダウンロードされたデータの構造を自動的に解析できることを知っています)。まず、loadVars を使用して、URLLoader がダウンロードされたデータを自動的に解析できるかどうかを確認してください。

1. // アクションスクリプトコード
2. varloader:URLLoader = new URLLoader();
3. var url:URLRequest = new URLRequest("test.php"); //送信メソッドを POST に設定します
6. url.method = URLRequestMethod.POST; // URLVariables を宣言します
8. var value:URLVariables = new URLVariables(); // を設定します。送信されました
10.values.message="こんにちは、フラッシュです!"
11.loader.addEventListener(Event.COMPLETE,loaded);
13. 14. トレース(loader.data);
15. //outPut: phpMessage=im php message!&flashMessage=hello im flash!
17. エラー; .trace (loader.data.flashMessage);
20.
1. //
2. php
3. $flashData = $_POST['message']
4. $phpMessage = 'im php message!'
6.表示できます。はい、データは完全にダウンロードされましたが、解析されず、例外がスローされました。それでは、URLLoader はデータを自動的に解析できないのでしょうか。いいえ、その逆です。URLLoader は、選択できるさまざまなデータ解析方法を提供します。これらのデータ解析メソッドはすべて URLLoaderDataFormat にあります。 BINARY - バイナリ形式で解析されます。 TEXT - テキスト形式で解析されます。 VARIABLES - 変数と値のペアで解析されます。 URLLoader の dataFormat 属性は、解析方法の選択肢を提供します。

1. //actionscript コード
2. varloader:URLLoader = new URLLoader(); // URLRequest を宣言します
4. var url:URLRequest = new URLRequest("test.php"); // 送信メソッドを POST に設定します
6. url.method = URLRequestMethod.POST; // URLVariables
8. var value:URLVariables = new URLVariables();
10.values.message="hello im flash!"; 12. . // 変数と値のペアを使用してデータを解析するように設定します
14.loader.addEventListener(Event.COMPLETE,loaded);
16. トレース(loader.data);
17. //outPut: phpMessage=im phpメッセージ!&flashMessage=こんにちは、trace(loader.data.phpMessage);
20.trace(loader.data.flashMessage);
21. こんにちは、フラッシュです! }

1. 3. $phpMessage = 'im php message!'
6. ;

これらは、as3 でのバックグラウンドとの対話の基本的な内容です。これで、as3 でそのような対話を作成し、プログラムを強化するための動的データを取得できるようになります。
独自の実験を開始する前に、注意すべき点がいくつかあります。1. 例外をキャッチして処理することを忘れないでください (上記の例は、完璧なテスト環境で実行されていることを前提としているため、例外をキャッチして処理するコードはありませんが、実際にはさまざまな状況が発生する可能性があります)。 URLLoader いくつかの例外がスローされる可能性があります (「詳細についてはドキュメントを参照してください)
そのような問題が発生しないと確信している場合でも、ioError および securityError イベントをリッスンするか、try-catch を通じてそれらを処理する必要があります。
2. ファイルのエンコード。これは多くの場合、エンコードの問題が原因で文字化けしたり、解析エラーが発生したりします。私のアプローチは、送信されるデータとバックグラウンドで返されるデータがすべて UTF であることを確認することです。 - 8 形式 (フラッシュのデフォルトのエンコーディングが utf-8 であるため)

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート