flash_as3_facebook_api:如何迭代FacebookDesktop.login返回的FacebookSession对象
在flashbuilder调试器模式下,当我在loginhandler方法中放置断点时,我可以检查FacebookDesktop.login返回的FacebookSession对象的所有道具/VAL 但是,我不能似乎在中使用for…遍历FacebookSession对象。我已经使用ObjectUtil.isDynamicObject(…)检查了FacebookSession是否是动态的,但它不是,因此for..in应该可以工作flash_as3_facebook_api:如何迭代FacebookDesktop.login返回的FacebookSession对象,facebook,actionscript-3,flash,loops,flash-builder,Facebook,Actionscript 3,Flash,Loops,Flash Builder,在flashbuilder调试器模式下,当我在loginhandler方法中放置断点时,我可以检查FacebookDesktop.login返回的FacebookSession对象的所有道具/VAL 但是,我不能似乎在中使用for…遍历FacebookSession对象。我已经使用ObjectUtil.isDynamicObject(…)检查了FacebookSession是否是动态的,但它不是,因此for..in应该可以工作 public function gf_handle_facebook
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
}
}
将只循环浏览动态属性,正如您所说,它不是动态的。//获取该类的XML描述
//并将变量类型返回为带有e4x的XMLList
var varList:XMLList=flash.utils.describeType(myVO)…变量;
for(vari:int;i
。。。那起作用了。。。但我想知道:这看起来像是黑客行为,还是你会认为这是一种合适的、健壮的、可靠的方法,用于挖掘第三方(facebook)供应商返回的对象。。。谢谢。我相信这是一个很好的低层次的原因,但很抱歉我不知道。显然,这是你们所有的选择。我认为这是FB方面的疏忽。但是,因为您知道它不是动态的,所以您应该只按名称调用属性。
//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].@name+':'+ myVO[varList[i].@name]);
}