2012-04-14 12 views
2

イベントが完了したときにループ内とローダー内に追加されているため、Facebookの連絡先から名前と画像を追加できません。フラッシングコードはデータをデータベースに追加しますが、オブジェクトの名前はループの最後の人です。何かご意見は?ありがとう!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クラスの機能拡張:私はprivate var person:PersonVO;を使用していない

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

:あなたはDynamicLoaderのインスタンスに好き

dynamic class DynamicLoader extends Loader{} 

その後店を。だからあなたがあなたのクラスの他のメソッドでそれを使用していないなら、それを完全に削除することができます。

関連する問題