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(); } };
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); };
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"; } };