Показать сообщение отдельно
Старый 14.04.2014, 23:04
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 1  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Не может он возвращать данные через return. В ас3 реализована система событий. Язык однопоточный, и он не может остановиться и подождать пока придут данные с сервера. Поэтому тут есть два варианта, либо отсылать событие, когда данные пришли, и по событию их получать, либо передавать в этот метод колбэк, и дергать его по приходу данных. Второй вариант удобнее, так как потребует меньше кода.

В общем случае это выглядит примерно так
Код AS3:
private static var _onCompleteUser:Function = null;
public static function getUserData(onCompleteUser:Function):void {
    _onCompleteUser = onCompleteUser;
    VK.api("users.get", { user_ids: flashVars['viewer_id'], fields: "first_name" }, finishedGetUser, finishedGetUserError);
}
private static function finishedGetUser(params:Object):void {
      if (_onCompleteUser != null) _onCompleteUser.apply(); // ну и можно тут, к примеру сразу данные передавать, а можно присвоить их какой-то переменной и получать через геттер
}