Apache flex 当代码内联写入flex中的mxml标记时,如何使用事件参数

Apache flex 当代码内联写入flex中的mxml标记时,如何使用事件参数,apache-flex,mxml,Apache Flex,Mxml,以下两者之间的区别是什么: 在HTTPService类的result属性中提供函数引用,如下所示: protected function httpserviceCheckUpdate_resultHandler(event:ResultEvent):void { var version:Number = event.result.text.version as Number; var xmldata:XML = XML(event.result); // and a

以下两者之间的区别是什么:

在HTTPService类的
result
属性中提供函数引用,如下所示:

protected function httpserviceCheckUpdate_resultHandler(event:ResultEvent):void
{
     var version:Number = event.result.text.version as Number;
     var xmldata:XML = XML(event.result);
     // and all the processing you want to do
}
<mx:HTTPService id="httpserviceCheckUpdate"
                    method="POST"
                    url="http://abc.com/actions.php"
                    resultFormat="text"
                    fault="httpservicexml_faultHandler(event)"
                    result="httpserviceCheckUpdate_resultHandler(event)">
        <mx:request xmlns="">
            <action>versionCheck</action>
        </mx:request>
    </mx:HTTPService>
受保护函数httpserviceCheckUpdate\u resultHandler(事件:ResultEvent):无效 { 变量版本:编号=event.result.text.version作为编号; var xmldata:XML=XML(event.result); //以及所有你想做的处理 } 版本检查 及

在同一HTTPService类的
中对完整功能进行编码

<mx:HTTPService id="httpserviceCheckUpdate"
                method="POST"
                url="http://abc.com/actions.php"
                resultFormat="text"
                fault="httpservicexml_faultHandler(event)"
                result="httpserviceCheckUpdate_resultHandler(event)">
    <mx:request xmlns="">
        <action>versionCheck</action>
    </mx:request>
    <mx:result>
        <![CDATA[
        var version:Number = event.result.text.version as Number;
        var xmldata:XML = XML(event.result);
        // and all the processing you want to do
        ]]>
    </mx:result>
</mx:HTTPService>

版本检查
如果两者相同,那么如何使用第二种方法(如httpservice类的result属性中所述)提供事件参数

在FLEX中,哪一种方法更好


谢谢

事实上,我主要是在代码中设置事件,所以甚至不像您的第一个示例,而是在一个完整的事件调用中:

component.addEventListener(<event>, <handler>, <usecapture>, <priority>, <weakreference>)
component.addEventListener(,,)
始终使用所有5个参数。我在代码中这样做,因为我倾向于在不需要侦听器时删除它们,但在需要时再次添加它们:这只能在代码中完成

我总是使用所有5个参数,因为它可以很好地控制优先级(谁先获得事件),第二个原因是内存管理:如果我碰巧忘记删除侦听器,并且eventdispatcher是对事件处理程序的唯一强引用,垃圾收集器仍然能够删除该处理程序所属的对象。我认为仅此一点就值得在代码中定义事件处理程序

回到你的问题:我从来没有发现过像你这样的例子。其次,我发现的是这样的:

<mx:HTTPService id="httpserviceCheckUpdate"
                method="POST"
                url="http://abc.com/actions.php"
                resultFormat="text"
                fault="httpservicexml_faultHandler(event)"
                result="httpserviceCheckUpdate_resultHandler(event)">
    <mx:request xmlns="">
        <action>versionCheck</action>
    </mx:request>
    <mx:result>
        <![CDATA[
        import ....ResultEvent;
        protected function httpserviceCheckUpdate_resultHandler(event:ResultEvent):void 
        {
            var version:Number = event.result.text.version as Number;
            var xmldata:XML = XML(event.result);
            // and all the processing you want to do
        }
        ]]>
    </mx:result>
</mx:HTTPService>

版本检查
正如您看到的,这里有一个包含事件的完整函数签名。唯一的区别是,组件中定义的处理程序将在容器中定义的处理程序之前被调用,不同的是,我认为它们与在代码中设置处理程序一样好,而且都不好。

使用
标记不是一种标准的操作方式。您可以使用MXML为任何事件使用标记。它是为快速原型而设计的,但不是为了代码清洁。它们并不完全相同,因为后者是一个没有参数的匿名函数,但是您可以使用
httpserviceCheckUpdate.lastResult
属性访问结果

您的第一种方法是更好的,因为它是标准的、更干净、可恢复的,并且您可以设置参数