Проблемы с отображением профиля изображения во Flash SWF - PullRequest
0 голосов
/ 02 марта 2011

Я следовал этому уроку Загрузка изображения профиля Facebook во Flash SWF с помощью Graph API , чтобы изображение профиля пользователя отображалось в моей флэш-игре, но у меня возникли некоторые проблемы.

import com.facebook.graph.Facebook;
import com.facebook.graph.data.FacebookSession;
import com.facebook.graph.net.FacebookRequest;

import flash.events.Event;
import flash.events.IOErrorEvent;

//place your APP ID here
const APP_ID:String = "app_id";

//Initialize facebbok library
Facebook.init(APP_ID, HandleLogin);

function HandleLogin(response:Object, fail:Object):void
{
    if(Facebook.getSession().accessToken)
    {
        LoadMyInfo();
        LoadMyPicture();
    }
}

function LoadMyInfo():void
{
    Facebook.api("/me", MyInfoLoaded);
}

function MyInfoLoaded(response:Object, fail:Object):void
{
    nameTextField.text = response.name;
}

function LoadMyPicture():void
{
    debug.text = "Entered loadMyPicture() function ";

    var loader:Loader = new Loader();
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, MyPictureLoaded, false, 0, true);

    var request:URLRequest = new URLRequest("facebookProxy.php");
    var variables:URLVariables = new URLVariables();

    variables.path = Facebook.getImageUrl(String(Facebook.getSession().uid), 'large');

    debug.appendText(" \nvariables.path: " + String(variables.path));

    request.data = variables;

    debug.appendText(" \nrequest.data: " + String(request.data))

    loader.load(request);

    debug.appendText(" \n" + String(loader.load(request)));
}

function MyPictureLoaded(event:Event):void 
{
    debug.appendText(" \nEntering MyPictureLoaded");

    var loader:Loader = event.target.loader;
    loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, MyPictureLoaded);
    loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, MyPictureLoadError);        
    var bitmap = Bitmap(loader.content);
    bitmap.smoothing = true;

    //Note: picturePlaceholder is just a blank movie clip on the Stage
    bitmap.x = picturePlaceHolder.x;
    bitmap.y = picturePlaceHolder.y;
    bitmap.width = picturePlaceHolder.width;
    bitmap.height = picturePlaceHolder.height;
    picturePlaceHolder.addChild(bitmap);

    debug.appendText(" \nBitmap is null: " + String(bitmap == null) +
                     " \nBitmap X: " + String(bitmap.x) + " Bitmap Y: " + String(bitmap.y) +
                     " \nBitmap width: " + String(bitmap.width) +
                     " \nBitmap height: " + String(bitmap.height))
}

function MyPictureLoadError(e:IOErrorEvent):void
{
    debug.appendText("Loading Error");
}

Вот так выглядит мой код после следования учебникам по ссылке выше.При отладке я заметил, что функция MyPictureLoaded никогда не вызывается.

Они никогда не указывали, где я буду вызывать функцию LoadMyPicture .Я предполагал, что это пойдет вместе с LoadMyInfo , поэтому я поместил его туда.У них есть рабочий пример, но нет исходного кода, поэтому я надеюсь, что кто-то здесь мог бы пролить свет на это.

РЕДАКТИРОВАТЬ 1

Здесь это то, на что это похоже, когда я помещаю это на Facebook.Последняя строка debug.appendText ("\ n" + String (loader.load (request))); выводит неопределенное значение.Я также внес изменения в variables.path = Facebook.getImageUrl (String (Facebook.getSession (). Uid), 'large'); Я добавил (String (), 'large').) потому что в документах говорится, что туда нужно вводить строки. Редактировать: я понял, что добавлять String () бессмысленно.

1 Ответ

1 голос
/ 02 марта 2011
var request:URLRequest = new URLRequest("facebookProxy.php");

Вы выполнили ту часть учебника, которая пишет на вашем сервере прокси-загрузчик PHP на стороне сервера?

Если на вашем сервере нет файла с именем facebookProxy.php, на котором вы его запускаете, он не будет работать (код запрашивает «./facebookProxy.php», который, вероятно, не существует). Если вы хотите запустить это в отладчике на вашем локальном компьютере, вам нужно сделать этот файл в том же каталоге, что и ваш SWF, и убедиться, что на вашем локальном хосте работает apache / php.

Если это слишком много для вас, я бы предложил следующие примеры со страницы проекта API: http://code.google.com/p/facebook-actionscript-api/downloads/detail?name=GraphAPI_Examples_1_6.zip&can=2&q=

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...