2011-02-01 10 views
0

私はFacebookのグラフApiで与えられたPostRequestクラスの使い方をインターネットで見てきましたが、何も見つかりませんでした。私はビットマップデータをアップロードするためにそれを使用する方法が不思議です。それはまったく動いていないようです。Facebookのグラフを使用してBitmapDataをアップロードする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; 
} 

を私は写真を撮るとstraightawayアップロードする全機能を作ってみましたしかし、それは動作しません。その後、私は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 values:Object = {message:cap, image:bmd}; 

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

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

どちらも私を困惑され、動作しません。最初に、それはこのようなものでした最初のものは何もエンコーディングせずに働いたので、私はちょうどそのように呼び出そうとするとうまくいかない理由は分かりません。どんな助け?

+0

よろしくお願いします。私はすでに問題を見つけました。私はfileNameを置くのを忘れました: "file_name" – sanzochan

答えて

0

ビットマップデータをラップまたはエンコードする必要はありません。ちょうどビットマップを作成し、このようにあなたのオブジェクトに入れて:

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); 
関連する問題