2012-04-14 38 views
2

我無法將Facebook聯繫人的姓名和圖像添加到SqLite,因爲當事件完成時,在循環和加載程序啓動時添加內容。 Fllowing代碼將數據添加到數據庫,但在對象的名稱中是循環中的最後一個人。有什麼想法嗎?謝謝!將Facebook上的完整聯繫人對象添加到SqLite

 private var person:PersonVO; 

    protected function handleFriendsLoad(response:Object, fail:Object):void 
    { 
     if (fail) { return } 

     var friends:Array = response as Array; 
     var l:uint=friends.length; 

     for (var i:uint=0;i<l;i++) { 
      var friend:Object = friends[i]; 

      FacebookDesktop.api('/'+friend.id, loadData); 
     } 
    } 

    private function loadData(object:Object, fail:Object):void 
    { 
     if (fail) { return; } 

     var loader:Loader = new Loader(); 
     loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageToByteArray); 
     loader.load(new URLRequest(FacebookDesktop.getImageUrl(object.id, 'large'))); 

     person = new PersonVO() 

     person.name = object.first_name; 
    } 

    private function imageToByteArray(event:Event):void 
    { 
     var wczytaj:Loader = (event.target as LoaderInfo).loader; 
     var image:Bitmap = Bitmap(wczytaj.content); 
     var encoderJpeg:JPEGEncoder = new JPEGEncoder(); 
     var byteArray:ByteArray = encoderJpeg.encode(image.bitmapData); 

     person.image= byteArray; 

     insert(person); 
    } 

    private function insert(person:PersonVO):void 
    { 
     dbStatement.text = "INSERT INTO person (name,image) values(:name,:jpeg)"; 
     dbStatement.parameters[":name"] = person.name; 
     dbStatement.parameters[":jpeg"] = person.image; 
     dbStatement.execute(); 
    } 

回答

0

擴展Loader級功能:

dynamic class DynamicLoader extends Loader{} 

然後存儲無論你在DynamicLoader情況下,想:

private function loadData(object:Object, fail:Object):void 
{ 
    if (fail) { return; } 

    var person:PersonVO = new PersonVO(); 
    person.name = object.first_name; 

    var loader:DynamicLoader = new DynamicLoader(); 
    loader.person = person; 
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageToByteArray); 
    loader.load(new URLRequest(FacebookDesktop.getImageUrl(object.id, 'large'))); 
} 

private function imageToByteArray(event:Event):void 
{ 
    var wczytaj:DynamicLoader = (event.target as LoaderInfo).loader as DynamicLoader; 
    var image:Bitmap = Bitmap(wczytaj.content); 
    var encoderJpeg:JPEGEncoder = new JPEGEncoder(); 
    var byteArray:ByteArray = encoderJpeg.encode(image.bitmapData); 

    var person:PersonVO = wczytaj.person; 
    person.image= byteArray; 

    insert(person); 
} 

我沒有用過private var person:PersonVO;。所以如果你沒有在課堂上使用它,你可以把它完全移除。