#flash #facebook-graph-api #actionscript-3
#flash #facebook-graph-api #actionscript-3
Вопрос:
Я пытаюсь пометить нескольких друзей на фото, используя Graph API AS3 для моего приложения Flash. Если я использую значение статически, результат успешен и работает как шарм, но когда я пытаюсь ввести params.tags
динамическое значение, которое я получаю из массива (заполняется с помощью флажка), это не удается.
Вот динамические и неудачные:
var arrUserID:Array = new Array("1447615481","1052646429");
var len:Number = arrUserID.length;
var someStr:String = "";
for (var i:Number=0;i<len;i ) {
someStr = arrUserID[i] "," Math.round(Math.random()*imgHolder.width) "," Math.round(Math.random()*imgHolder.height);
if(i != len-1){
someStr = "||";
}
}
var arr:Array = [];
arr = someStr.split("||");
var outputArr:Array = [];
var len2:Number = arr.length;
var temp:Array = [];
for (var j:Number=0;j<len2;j ) {
temp = arr[j].toString().split(",");
outputArr.push({'tag_uid':temp[0], 'x':temp[1], 'y':temp[2]});
}
var params:Object = new Object();
params.image = bitmap;
params.message = "YEZAAA";
params.fileName = "file-name";
**params.tags = JSON.encode(outputArr);** --> dynamic value from array
Facebook.api('me/photos', onSaveToPhotoAlbumComplete, params);
и вот успешная версия и статические:
var params:Object = new Object();
params.image = bitmap;
params.message = "YEZAAA";
params.fileName = "file-name";
params.tags = '[{tag_uid:"12345678","x":"0","y":"0"},{tag_uid:"001 111","x":"0","y":"0"}]';
Facebook.api('me/photos', onSaveToPhotoAlbumComplete, params);
Так что это просто заставляет меня задуматься, в чем моя ошибка на самом деле?
Здесь действительно есть необходимость, поскольку я уже неделю дергаю себя за волосы, пытаясь разобраться, но безрезультатно.
Ответ №1:
Вот как я получил свои динамические идентификаторы для работы с вашим кодом:
1) Вы должны помнить, что, как и в вашем статическом коде, параметр tags должен в конечном итоге привести к String
. В вашей динамической версии используется фактический Object
. Так что сохраняйте это в виде строки, вот так:
var tagsArr:String = '[{tag_uid:"' uid1 '", "x":"0", "y":"0"},
{tag_uid:"' uid2 '", "x":"0", "y":"0"}]';
Комментарии:
1. Спасибо за советы Андрею Сфату … на самом деле я уже понял .. Исправление здесь .. на самом деле статическая версия, которую я получаю от этого замечательного сообщества (кто-то опубликовал ему похвалу .. о чем я уже забыл)