Flash-PHPクライアントとサーバー間の通信を処理するクラスを作成します。基本的に、Flashは変数をPHPに送信し(PHPの場合はUIのボタンをクリックした後など)、PHPはFlashに値を送信します。パーサーとビューアップデータからデータを取得するクラスを切り離します
クラスは、次のように考えられます
package
{
import flash.net.URLLoader;
import flash.net.URLVariables;
import flash.net.URLRequest;
import flash.net.URLRequestMethod;
import flash.events.Event;
import flash.events.IOErrorEvent;
//
public class CSManager extends MovieClip
{
//
var scriptLoader:URLLoader;
//
public function CSManager()
{
scriptLoader = new URLLoader();
scriptLoader.addEventListener(Event.COMPLETE, handleLoadSuccessful);
scriptLoader.addEventListener(IOErrorEvent.IO_ERROR, handleLoadError);
}
//;
public function handleLoadSuccessful($evt:Event):void
{
trace("Message sent.");
}
//
public function handleLoadError($evt:IOErrorEvent):void
{
trace("Message failed.");
}
//
public function sendLoad(variable):void
{
var scriptRequest:URLRequest = new URLRequest("http://mydomain/myapp/my.php");
var scriptVars:URLVariables = new URLVariables();
scriptVars.var1 = variable;
scriptRequest.method = URLRequestMethod.POST;
scriptRequest.data = scriptVars;
scriptLoader.load(scriptRequest);
}
}
}
だから、私はボタンで呼び出されるメソッドの本体に、私はこのクラスをインスタンス化し、CSManager sendLoadメソッドを呼び出すことを想像してみてください。
ご覧のとおり、sendLoadはサーバーにデータを送信し、は2つのメソッドが結果を処理します。 データが受信されると、アプリケーションはの結果を解析する必要がありますとはビューを更新しますが、このクラスをパーサーとビューを更新するクラスから切り離して、サーバーからデータを取得するためにのみ使用します。 これは具体的には、データを解析して、handleLoadSuccessfulメソッドの本体の内部からビューを更新したくないことを意味しますが、私は別の解決策を探したいと思います。
この問題を解決するにはどのような方法が良いでしょうか。
編集:私はbetter piece of codeを見つけましたが、ここで問題は同じようです。
これは非常に興味深い見通しですが、データをresult/faultメソッドから取得するにはどうすればよいですか?私はあなたの考えは、result/faultメソッドの本体の中にdispatchイベントを置くことだと考えています。 –
2つのオプションがあります.1つは、必要なデータを保持するカスタムEventクラス(extends Event)を作成し、そのインスタンスをディスパッチすることです。もう1つは、アクセスするデータ、つまりCSManagerのメソッド/プロパティを提供することです。これは最も簡単なソリューションであり、必要なデカップリングを提供します。 – Tom
まず、あなたと私がとても親切に分かち合ったコードを少し修正しました。addEventListenerでは、MYEVENTではなく「EVENT」という文字列が私のために働いていました。私は最初の選択肢を完全に理解していましたが、第二の選択肢は私には分かりませんでした。 –