2012-04-02 163 views
0

在flashbuilder调试模式返回FacebookSession对象,我可以检查所有道具/由FacebookDesktop.login返回FacebookSession对象的丘壑,当我把在断点我的loginhandler方法。flash_as3_facebook_api:如何遍历由FacebookDesktop.login

但是,我不能似乎遍历FacebookSession对象使用for ... in。我已经检查了FacebookSession是否使用ObjectUtil.isDynamicObject(...)动态化,但它不是,所以for..in应该可以工作。

public function gf_handle_facebook_login_return(argl_success : Object , 
               argl_failure : Object ) : void 
    { // IF I ADD breakpoint here, I get a fully populated argl_success object in flashbuilder's Debugger Variables tab. 

    trace("gf_handle_facebook_login_return , A : " + typeof(argl_success) + " , " + argl_success[ "uid" ]) ; // works 
    trace("gf_handle_facebook_login_return , C : " + ObjectUtil.isDynamicObject(argl_success)) ; // false ... is NOT a dynamic class 

    var lvo_FBS : FacebookSession = FacebookSession (argl_success) ; // tried it with and without casting 
    var lvn_prop :* ; 
    for (lvn_prop in lvo_FBS) 
     { trace("gf_handle_facebook_login_return , D : " + lvn_prop ) ; // is never called 
     } 
    for each(lvn_prop in lvo_FBS) 
     { trace("gf_handle_facebook_login_return , E : " + lvn_prop ) ; // is never called 
     } 
    } 

回答

1

For in只能通过动态特性循环,就像你说的是不是动态的。

Try this example

//Get an XML description of this class 
//and return the variable types as XMLList with e4x 
var varList:XMLList = flash.utils.describeType(myVO)..variable; 

for(var i:int; i < varList.length(); i++){ 
//Show the name and the value 
trace(varList[i][email protected]+':'+ myVO[varList[i][email protected]]); 
} 
+0

The_asMan ...那...工作,但我想知道:确实似乎hackish的,或者你会认为这是适当的,稳健的,可靠的方法来使用挖掘的目的到第三方(Facebook)供应商的返回对象? ... 谢谢。 – dsdsdsdsd 2012-04-03 08:11:00

+0

我相信有一个很好的低层次的原因,但对不起,我不知道。显然这个选项是你所有的。 – 2012-04-03 15:25:18

+0

我认为这是FB方面的疏忽。然而,既然你知道它不是动态的,那么你应该只是按名称调用属性。 – 2012-04-03 17:18:18