ページの先頭行へ戻る
Interstage AR Processing Server V1.1 開発ガイド
FUJITSU Software

2.5.3.1 onloadの処理

Webストレージに保存したデータを取得、動作モードに応じたhtml表示の変更した後、シーンリストを取得
Apl.onloadPreWork = function () {
  // ネイティブカメラを停止させます。
  AR.Camera.stopCameraView(Apl.noop, Apl.stopCameraViewError);
  //Webストレージからデータを取得します。
  Apl.getLocalStorageData();
  //動作モードに応じてhtml表示を変更します。
  Apl.showOperationMode();
  //動作モードに応じてシーンを取得します。
  if (Apl.operationMode == "serverMode") { //サーバ通信モードの場合
    //現在のシナリオIDのシーンリストを取得して、Apl.sceneListに格納します。
    Apl.getScene(Apl.scenarioId);
  } else { //スタンドアローンモードの場合
    //Apl.sceneListに保持しているシーンリストを表示します。
    Apl.showSceneList();
  }
};
シーン取得の検索クエリを生成し、AR実行サーバからデータを取得
Apl.getScene = function (_scenarioId) {
  //検索クエリオブジェクトを作成します。
  var query = new Apl.QuadQuery();
  query.type = "RECORDSANDCOUNT";
  query.limitRange = new Apl.Range(1, 10);
  query.qattributeOrderIndexRange = new Apl.Range(1, 10);
  //シーンが登録されているqtypeを指定します。
  query.qtypeNameRanges = new Apl.Range("arsen_scene");
  //シーンidの範囲を指定します。
  query.whereExpressions = new Array(new Apl.QuadQueryExpression(new Apl.Range("ar_id"), new Apl.Range(1, 4), "LONG"));
  if (typeof _scenarioId != 'undefined')
  //シナリオIDを指定します。
    query.whereExpressions.push(new Apl.QuadQueryExpression(new Apl.Range("arscn_scenarioid"), new Apl.Range(_scenarioId), "LONG"));

  //文字列に変換します。
  query = Apl.makeQuadQuery(query);

  //AR実行サーバからシーンを取得します。
  AR.Data.getArServerData(query, true, Apl.getSceneSuccess, Apl.getArServerDataError);
};
AR実行サーバからシーンの取得に成功した場合の処理
Apl.getSceneSuccess = function (_result) {
  //初期化します
  Apl.sceneList = null;
  //結果からシーンを抽出してApl.sceneListに格納します。
  Apl.extractScene(_result.getValue());
  //シーンが登録されていた場合はWebストレージに保存します。
  if (Apl.sceneList != null)
    localStorage.setItem("sceneList", JSON.stringify(Apl.sceneList));
  //シーンリストを表示します。
  Apl.showSceneList();
};
シーンの抽出
Apl.extractScene = function (_data) {
  //取得したレコード数です。
  var recordLength = _data.records.length;
  for (var recordIndex = 0; recordIndex < recordLength; recordIndex++) {
    //レコードを一つずつ調べます。
    var record = _data.records[recordIndex];
    var valueLength = record.qvalues.length;
    var value = new Object();
    var sceneId;
    //使用するqvalueの値だけ取得します。attributeNameで判断します。
    for (var valueIndex = 0; valueIndex < valueLength; valueIndex++) {
      var qvalue = record.qvalues[valueIndex];
      if (qvalue.qattributeName == "ar_name") { // シーン名
        value.name = qvalue.stringValue;
      }
      if (qvalue.qattributeName == "ar_description") { // シーンの説明
        value.description = qvalue.stringValue;
      }
      if (qvalue.qattributeName == "ar_id") { // シーンID
        sceneId = qvalue.longValue
      }
    }
    if (value.name != null) {
      //Apl.sceneListに格納します。
      if (Apl.sceneList == null) Apl.sceneList = new Array();
      Apl.sceneList[sceneId] = value;
    }
  }
};
シーンリストの表示
Apl.showSceneList = function () {
  if (Apl.sceneList != null) {
    var show = "【手順一覧】\n";
    for (scene in Apl.sceneList) {
      if (Apl.sceneList[scene] != null)
        show += "手順" + scene + " : " + Apl.sceneList[scene].name + "\n";
    }
    alert(show);
  } else {
    alert("シーンを取得できませんでした。動作モードとネットワーク状態を確認してもう一度お試しください。");
    location.href = "index.html";
  }
};