ProgressionのLoadURLコマンドを使ってみる。

  • このエントリーをはてなブックマークに追加
  • 0

Progression Frameworkの中にある、「LoadURL」というコマンドを使って、データのダウンロードを行おうと画策。
が、肝心のチュートリアルがこの状態なので、とりあえず自分で試してみた。
以下、正しい使い方かどうかは知らないがメモ。

■求めるもの

まず、LoadURLコマンドに俺が期待する機能は次の2つ。

  1. データをダウンロードする
  2. ダウンロード完了時に任意の関数を実行する
    1. 基本的には、URLLoaderと同じだと思っているので、この2つが出来ればいいんじゃないかな?という事で探っていこう。

      ■データのロード

      データのロードに関しては、コマンドをシーンに追加すればいいっぽい。

      ActionScript

      1. addCommand(new LoadURL(new URLRequest(url)));

      ただし、これだとIO/セキュリティエラー発生時とか、ロード終了後に何も出来ない、役立たずなコマンドが出来上がるだけのようだ。
      と言う事で、こいつはaddCommand実行時に作成するんじゃなくて、シーンのメンバーにしといた方がよさそうだ。

      調査の結果、こんな感じでシーン内にメンバと関数を定義しておけばよさそう。

      ActionScript

      1. private var _loadURL:LoadURL;
      2. ・・・
      3. private function createLoadURL(req:URLRequest):void {
      4.     _loadURL = new LoadURL(req);
      5.     _loadURL.addEventListener(CommandCatchEvent.ERROR , onError);
      6.     _loadURL.addEventListener(CommandCatchEvent.Exception , onException);
      7.     _loadURL.after(this , parseData);
      8. }
      9. private function onError(e:CommandCatchEvent):void {
      10.     //エラー発生時の処理
      11.     //IOErrorEvent、SecurityErrorEvent発生時に、ここに飛んでくる
      12. }
      13.  
      14. private function onException(e:CommandCatchEvent):void {
      15.     //例外発生時の処理
      16. }

      で、使用時は

      ActionScript

      1. addCommand(this._loadURL);

      ロード完了時に呼ばれる関数parseDataは、シーン内にこんな風に定義する。

      ActionScript

      1. private function parseData():void {
      2.     //ダウンロードしたデータはthis._loadURL.dataにObject型で格納されているので、
      3.     //一旦使いやすい型(ByteArrayとか、IDataInputとか)に変換する
      4.     var data:IDataInput = this._loadURL.data as IDataInput;
      5. }

      これでいいはずだが、今一正解がわからないのがタマにキズ。

      あと、問題はキャッシュ。
      同じURLから2回データをダウンロードしようとしたら、2回目以降はキャッシュが有効になっていた。俺としては毎回データを取得しに行って欲しかったのだが、その辺の調整はどうやるのかね?

スポンサーリンク
スポンサーリンク
  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
スポンサーリンク