Загрузка BitmapData с помощью Facebook Graph Api - PullRequest
0 голосов
/ 01 февраля 2011

Я искал в интернете, как использовать класс PostRequest, предоставленный Facebook в их Graph Api, но я ничего не смог найти на нем.Мне интересно, как использовать его для загрузки растровых данных.Кажется, он просто не движется.

Я использовал этот код, и он работал:

private function getSnapshot(e:MouseEvent):void 
{
    bmd = new BitmapData(vidDisplay.width, vidDisplay.height); 
    bmd.draw(vidDisplay);
    vidDisplay.previewImg.source = new Bitmap(bmd);

    isSnapshot = true;

    vidDisplay.upload_btn.enabled = true;
    vidDisplay.caption_txt.enabled = true;
    vidDisplay.browse_btn.enabled = false;
}

protected function upload(w:MouseEvent):void 
{
    var img:* = (isSnapshot) ? bmd : fileRef ;
    var values:Object = {message:vidDisplay.caption_txt.text, fileName:'FILE_NAME', image:img};

    fb.callApi("post", "me", "photos", values);

    vidDisplay.caption_txt.text = "";
    vidDisplay.upload_btn.enabled = false;
    vidDisplay.snapShot_btn.enabled = false;
}

Однако, когда я попытался сделать целую функцию, чтобы сделать снимок изагрузить сразу, это не работает.Сначала это было так:

private function doTakeSnapshot(con:MovieClip, cap:String = null):void
{
    ExternalInterface.call("doAlert", "doTakeSnapshot");

    var bmd:BitmapData = new BitmapData(con.width, con.height);
    bmd.draw(con);

    if (cap == null) { cap = "Check out my photo!"; }
    var values:Object = {message:cap, image:bmd};

    doCallApi("post", "me", "photos", values);
}

Затем я попытался с PostRequest:

private function doTakeSnapshot(con:MovieClip, cap:String = null):void
{
    ExternalInterface.call("doAlert", "doTakeSnapshot");

    var bmd:BitmapData = new BitmapData(con.width, con.height);
    bmd.draw(con);

    if (cap == null) { cap = "Check out my photo!"; }

    var ba:ByteArray = PNGEncoder.encode(bmd);
    var pr:PostRequest = new PostRequest();
    //var ba:ByteArray = pr.getPostData();
    pr.createPostData();
    pr.writePostData("fileName", "testtest");
    pr.writeFileData("fileName", ba, "image/png");
    pr.close();

    var byteArray:ByteArray = pr.getPostData();
    ExternalInterface.call("doAlert", "ByteArray = " + byteArray);

    var values:Object = {message:cap, image:byteArray};

    doCallApi("post", "me", "photos", values);
}

Оба не работают, что меня озадачивает.Первый работал без какого-либо кодирования, поэтому я не понимаю, почему он не работает, когда я просто пытаюсь так его назвать.Любая помощь?

1 Ответ

0 голосов
/ 13 февраля 2011

Вам не нужно оборачивать или кодировать свои растровые данные.Просто создайте растровое изображение и поместите его в свой объект так:

var bmd:BitmapData = new BitmapData(con.width, con.height);
bmd.draw(con); 
var bitmap:Bitmap = new Bitmap(bm);
var values:Object = {message:cap, image:bitmap};
fb.callApi("post", "me", "photos", values);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...