LoadURLでロードしたデータをIDで取得できる、LoadURLByIdコマンドを作ってみた。

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

Progression Frameworkで、外部データを読み込む時に使うLoadURLコマンドだが、データをID管理するのはどうかというアイデアがフォーラムに出ていたので、便利そうだしちょっと試しに実装してみた。
ただ、プロパティdataをSceneObjectに持たせるのは難しそうだったので、取り敢えずコマンドの方にクラス変数として持たせ、IDを使って取得できるようにしてみた。

そんなわけでソースはこんな感じ。基本的にはLoadURLと同じなので、子クラスとして定義。
パッケージ名は適当に変更して使うのがよいかと。

ActionScript

  1. package org.tarotaro.flash.progression.commands {
  2.     import flash.net.URLRequest;
  3.     import flash.utils.Dictionary;
  4.     import jp.progression.commands.LoadURL;
  5.    
  6.     /**
  7.     * ID管理可能なLoadURLコマンド
  8.     * @author tarotarorg
  9.     */
  10.     public class LoadURLById extends LoadURL {
  11.        
  12.         /**
  13.          * データを保管するDictionaryオブジェクト
  14.          */
  15.         private static var LOADED_DATA:Dictionary = new Dictionary();
  16.        
  17.         /**
  18.          * 管理用ID
  19.          */
  20.         private var _id:String;
  21.        
  22.         /**
  23.          * データをID管理可能なLoadURLコマンド
  24.          * @param    id            データのID
  25.          * @param    request        リクエスト
  26.          * @param    delay        処理遅延
  27.          */
  28.         public function LoadURLById(id:String,  request:URLRequest = null, delay:int = 0 ) {
  29.             super(request, delay);
  30.             this._id = id;
  31.             LOADED_DATA[id] = null;
  32.         }
  33.        
  34.         protected override function _executeComplete():void {
  35.             LOADED_DATA[this._id] = this.data;
  36.             super._executeComplete();
  37.         }
  38.  
  39.         /**
  40.          * IDをキーとしてロード後のデータを取得する。
  41.          * @param    id
  42.          * @return
  43.          */
  44.         public static function  getDataById(id:String):Object {
  45.             return LOADED_DATA[id];
  46.         }
  47.  
  48.         public function get id():String { return _id; }
  49.     }
  50. }

使い方はこんな感じで。

呼び出し時
ActionScript

  1. addCommand(
  2.     new LoadURLById("id_001",new URLRequest("http://??"))
  3. );
使用時
ActionScript

  1. var data:Object;
  2. data = LoadURLById.getDataById("id_001");
  3. trace(data);

でもって、テストは成功したのを1回試したくらいの危険な橋です。

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

フォローする

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