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